kn007的个人博客
♥ You are here: Home > 软件与网络 > php > 优化LNMP,Cache化请求

优化LNMP,Cache化请求

by | 41 Comments

提醒:本文最后更新于 4175 天前,文中所描述的信息可能已发生改变,请仔细核实。

最近做了对PHP、Nginx、MySQL进行了优化,其次对个别页面进行安全性及读取效率提升。主要内容有(文章最后有图):

首先交代下eA、MC及MySQL的query_cache部分的Cache大小均为64MB。

添加eAccelerator优化和缓存动态PHP运算,虽然现在运用的并不多,才使用了超过1/3的shm,但是命中率不错,而且明显迟缓感减少。

调整Memcache配置,命中率和存储量增多,超过80%的存储,命中率超过7成。特别是将一些大查询页面(单页超过10000的查询量)页面,进行了查询Cache化,存储在MC,大概是4M/页的数据。

使用tuning-primer查看并修改MySQL配置,使之MySQL更能利用VPS的性能,特别是一些大查询进行存储(query_cache),超过9成的存储量,不过在expired和hit方面仍然存在一定缺陷。

对Nginx配置进行修改,特别是gzip及rewrite规则上,其次微调及添加一些参数提高性能,效果不错(对主要部分的rewrite部分进行精简,并且添加触发条件,其他为微调,Hook CPU Core方面)。FastCGI有略微修改,不过收效甚微。不过也出现了个别问题,偶尔转发规则会使得域名自动附上端口(因为使用了Varnish,所以Nginx分配给博客的是8080端口)。

对带有input及post页面,进行防止XSS跨站攻击及屏蔽SQL注入的安全性措施(如:IP地址查询),另外就是减少php程序的冗余请求。


目前因为主题框架原因及个人原因使得但页面最小查询量大于50,标准查询量超过80,个别上W查询量。而降低查询量,精简查询,是必对Mysql进行减少,对查询做优化,缓存查询。还有一些就是主题本身一些冗余的函数、参数、查询请求需要在不影响功能的同时实现节俭。这些是我现在没时间去搞的东西。可能等什么时候有劲的时候再搞。

至于什么叫精简查询,其实就是效率算法,作用是化繁为简。举个简单的例子,大家的博客在footer方面都会有诸如 “Copyright © 开始时间-结束时间” 的版权提示。

最简单也是最常用的方式是:

<?php
   global $wpdb;
   $post_datetimes = $wpdb->get_row($wpdb->prepare("SELECT YEAR(min(post_date_gmt)) AS firstyear, YEAR(max(post_date_gmt)) AS lastyear FROM $wpdb->posts WHERE post_date_gmt > 1970"));
   if ($post_datetimes) {
       $firstpost_year = $post_datetimes->firstyear;
       $lastpost_year = $post_datetimes->lastyear;
       $copyright = __('Copyright &copy; ') . $firstpost_year;
       if($firstpost_year != $lastpost_year) {
           $copyright .= '-'. $lastpost_year;
       }
       $copyright .= ' ';
       echo $copyright;
   }
?>

而其实只要这么一句就行了,把起始日期固定,结束时间动态即可:

<?php echo 'Copyright © 2012-'.date('Y'); ?>

这便实现相同的功能,省去查询,而且也比纯静态的,相对轻松一些,纯静态,你必须记得每过一年改下时间,还是麻烦一点。


接着给几张图,为VPS在高峰期,启动6个多小时(Uptime)的抽样。
Memcache
QQ图片20130711001625
eAccelerator
QQ截图20130712184139
MySQL
2013-7-11 7-24-07

转载请注明转自:kn007的个人博客的《优化LNMP,Cache化请求

donate
有所帮助?

Comments

41 Comments立即评论
  1. 太高深了,表示看不懂。

    1. MOD回复

      @灵尘子: :o :o 好吧

  2. LV1回复

    我擦,七七,你的这篇文章在谷歌的“lnmp优化”关键词下排第7。。

    1. MOD回复

      @郑杰: 。。这没什么。。。百度的收录索引一直在减少。我对百度不带希望了。加上php、mysql的版本高,貌似百度出的结构化插件,不起作用。。没时间想了。
      你还没把东西发给我呢。

icon_wink.gificon_neutral.gificon_mad.gificon_twisted.gificon_smile.gificon_eek.gificon_sad.gificon_rolleyes.gificon_razz.gificon_redface.gificon_surprised.gificon_mrgreen.gificon_lol.gificon_idea.gificon_biggrin.gificon_evil.gificon_cry.gificon_cool.gificon_arrow.gificon_confused.gificon_question.gificon_exclaim.gif