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

优化LNMP,Cache化请求

by | 41 Comments

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

最近做了对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. LV1回复

    :lol: :lol: 不懂!

    1. MOD回复

      @Rachel: 嘿嘿,今天休息? :lol:

  2. 沙发木有,抢占板凳。 :mrgreen:

    1. MOD回复

      @老猫Music: 木措木措,话说怎么还不更新

  3. 看不懂看不懂看不懂

    1. MOD回复

      @傅小黑: 瞎扯。。

  4. LV4回复

    貌似有个叫 ZendOpcache的玩意儿很不错,缓存率100%,php5.5已内置,我也安装了,和Xcache并存无问题 :razz: :razz:

    1. MOD回复

      @郑杰: 感觉怎么样呢,貌似5.5与memcache兼容不了?

    2. LV4回复

      @kn007: 感觉还不错,缓存效率非常高,好些人都说我的博客又快了~

    3. MOD回复

      @郑杰: 那感情好 :roll:

    4. LV4回复

      @kn007: 为毛一定要用Memcached?你可以Redis或者Xcache啊

    5. MOD回复

      @郑杰: Redis,好久的回忆,确实不必mc,只是习惯用mc。。。

    6. MOD回复

      @郑杰: 你用过Redis?你现在vps做了什么优化,安装了什么?

    7. LV4回复

      @kn007: 安装过,不过半途而废。现在服务器的优化有:Net_Speeder、TCmalloc、XCache、Tengine、(可以装ngx_pagespeed,不过貌似和w3tc重复了,所以我没装,可以试试google的CDN服务,自带pagespeed优化功能),其余的都是代码层层次的优化了。比方说minify、略缩图用云存储云端生成、Gravatar头像全部缓存到云存储、prerender~还有一些有些忘了 :grin: :grin:

    8. MOD回复

      @郑杰: ngx_pagespeed目前还是开发阶段吧,记得是,貌似Gzip不了,另外google有啥米cdn,偶怎么没听说过。我觉得Redis有几种安装方法,第一种类似于FastCGI那种直接将php缓存;第二种就是那种利用Redis的客户端开发包连接到php,达到加速目的。。。第一种貌似更底层一点,速度更快...不过我没找到CDN工具,当禁用w3tc的时候,貌似没发现什么比较好的cdn rewrite工具,没时间找。。

    9. LV4回复

      @kn007: 近期准备做CSS Sprite,等我的阿里云ACE激活码申请下来,我数据库就用阿里云的RDS了。PS:阿里云ACE为每一个应用附赠了1G的数据库~我扔给我的云服务器用,看看能不能行

    10. LV4回复

      @kn007: 哦,还有ZendGuardLoader和ZendOpcache我也安装了,正在考虑Mariadb,不过目测RDS应该能秒杀Mariadb

    11. MOD回复

      @郑杰: RDS一直都是很牛逼的

  5. 太高深了.围观.

    1. MOD回复

      @小怪物: :oops: 哪有

    2. @kn007: 看不懂啊

    3. MOD回复
  6. LV4回复

    七七,你那几张性能检测图是New Relic还是什么生成的啊,看起来很厉害的样子~ :razz: :razz:

    1. MOD回复

      @郑杰: 自带的,mc、ea都有自带的control :razz:

    2. LV4回复

      @kn007: 哦,原来如此,我就用过XCache的webadmin,感觉很酷的样子~

    3. MOD回复

      @郑杰: XCache你用在哪?我还没用

    4. MOD回复

      @郑杰: 我现在,升到5.4,加了opcache了,但是w3tc启动不了,直接503。。。囧。。。没空搞,估计一些设置有问题

    5. LV4回复

      @kn007: ····我升级的时候都是禁用了w3tc的,不然必挂。。还有opcache的php.ini代码要加载ZendGuardLoader之前

    6. MOD回复

      @郑杰: 我现在是在之后,很正常。。。除了w3tc启动不了

  7. LV3回复

    lnmp折騰起來也是個無底洞,並且也是個周而複始的東西

    1. MOD回复

      @沫: 科技总有创新,总会有可以折腾的。

  8. LV1回复

    这个要了解下还是Linux强大

  9. 。。。你经常捣鼓这玩意

    1. MOD回复

      @大发: 你来的不是时候,刚测试完Redis,正在恢复。。。 :???:

  10. 回复

    :evil: 相对来说没apache安全

    1. MOD回复

      @小调: 怎么不安全法,你指的是什么?

    2. MOD回复

      @小调: 今天的新闻:“昨日,互联网遭受了一场漏洞风波——Apache Struts2高危漏洞” :???:

;-):|:x:twisted::smile::shock::sad::roll::razz::oops::o:mrgreen::lol::idea::grin::evil::cry::cool::arrow::???::?::!: