张宴ID:scun
3647次访问,排名2万外好友0人,关注者0
-
scun的文章
原创 2 篇
翻译 0 篇
转载 0 篇
评论 3 篇
最近评论
jackywdx:BS盗版!
store88:我喜欢
期待呀
gggxin:不错.受教了
文章分类
收藏
    相册
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 Nginx PHP5(FastCGI)生产环境跑PHP动态程序可超过“700次请求/秒”收藏

    新一篇: 减少Linux下Squid服务器的TIME_WAIT套接字数量 | 

    我生产环境下的两台Nginx + PHP5(FastCGI)服务器,跑多个一般复杂的纯PHP动态程序,从Nginx的日志可以统计出,单台Nginx + PHP5(FastCGI)服务器跑PHP动态程序的处理能力已经超过“700次请求/秒”,相当于每天可以承受6000万(700*60*60*24=60480000)的访问量:

      服务器①:DELL PowerEdge 1950(两颗 Intel(R) Xeon(R) 双核CPU 5120 @ 1.86GHz,4GB内存)

      服务器②:DELL PowerEdge 1950(一颗 Intel(R) Xeon(R) 双核CPU 5140 @ 2.33GHz,4GB内存)

      Web服务器:CentOS Linux 4.4 + Nginx 0.5.35 + PHP 5.2.6RC2(300 FastCGI Procees, unix-domain socket, with XCache)

      PHP程序内容:大量Memcached读写、少量MySQL读操作、大量文件队列写操作,然后计算,生成供<script type="text/javascript" src="http://www.domain.com/abc.php?u=1"></script>方式调用的JS代码或XML数据。

      网卡流量:1.5M~3M/秒

      请求数统计方式:从Nginx访问日志中,统计每分钟的第15秒共有多少条日志记录。

    引用
    grep "25/Mar/2008:15:01:15" /data1/logs/nginx.log | wc -l



      点击在新窗口中浏览此图片

      服务器的系统负载也不算高:

      点击在新窗口中浏览此图片

      总结:
      1、Nginx的处理能力超强,这块不是瓶颈。影响动态程序处理能力的因素主要在于PHP(FastCGI)。PHP(FastCGI)模式适用于执行时间较短的PHP程序,一般复杂的PHP程序执行时间应该在100ms以内,例如我的博客首页执行时间为38ms左右。假设一个PHP程序的执行时间为100ms,那么一个PHP(FastCGI)进程每秒可以处理完毕10个请求,300个FastCGI进程理论上每秒可以处理3000个请求。但是,在生产环境下,还将受到内存、系统负载等多方面的影响,例如300个PHP(FastCGI)进程需要占用2.4GB左右的内存,每秒处理超过1000个请求时,系统负载会飚升到100以上。因此,FastCGI的进程不是越多越好,而是够用就好。

      2、使用PHP的XCache、APC等加速模块会提供速度10倍左右,降低系统负载50倍以上。

      3、修改了spawn-fcgi,使它能够支持250个以上的FastCGI进程。

      4、如果PHP直接对MySQL进行大量读写操作,速度是达不到“700 request/sec”的,PHP与MySQL之间需要一个中间层,这是关键的技术。

      5、CPU的数量(多核算多个CPU,cat /proc/cpuinfo |grep -c processor)越多,系统负载越低,每秒能处理的请求数也越多。

      6、使用PHP 5.2.6RC2,因为它修正了PHP 5.2.5的“zend_mm_heap corrupted”错误BUG。PHP 5.2.5(FastCGI)在高并发请求情况下,经常会出现该错误。

      7、有空我将写一篇针对CentOS Linux环境Nginx + PHP5(FastCGI)安装、配置的最新博文。

    发表于 @ 2008年03月27日 10:38:00|评论(loading...)|编辑

    新一篇: 减少Linux下Squid服务器的TIME_WAIT套接字数量 | 

    评论

    #gggxin 发表于2008-03-27 15:10:16  IP: 61.129.60.*
    不错.受教了
    #store88 发表于2008-03-27 21:54:41  IP: 60.176.212.*
    我喜欢
    期待呀
    #jackywdx 发表于2008-04-07 22:20:43  IP: 219.243.33.*
    BS盗版!
    发表评论  


    当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
    Csdn Blog version 3.1a
    Copyright © scun