注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

老和山小和尚

敬天爱人

 
 
 

日志

 
 
 
 

apache2与nginx性能的初次比较的补充1  

2008-10-17 14:47:19|  分类: Nginx |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
昨天作了比较后,我发现在并发1500个连接的情况下,虽然apache event MPM模块的处理速度还可以,但是CPU的负载却达到了惊人的50以上,而相应的Nginx的负载始终没有超过2。我一直在想,用的是相同的技术,难道性能相差这么大?
由于Nginx采用epoll的技术,每个worker的处理连接数能力可以达到上万,所以其worker数量始终是个位数。而apache2 worker MPM模块采用原来的select技术,每个worker的连接数能处理上千就不错了,而且select会浪费大量的CPU时间在无谓的循环查询上。若想提高性能,只有增加worker的数量,所以worker的数量经常可以达到上百,相应的CPU负载也就上去了。原来的设置中每个worker的总线程数是很少的,所以高并发的情况下,worker数量会增加很快(worker下面线程数跟客户连接数的关系暂时我还不清楚,但是可以肯定的是,每个worker过少的线程数,会导致worker进程的数量激增。当然worker数量多据说为了稳定的缘故,一个worker挂掉,损失也不超过1k个客户连接)。
所以参考Nginx的设置,我增加了ThreadLimit 和ThreadsPerChild的值,配置如下:
<IfModule mpm_event_module>
    ThreadLimit         256
    ServerLimit         256
    StartServers         8
    MaxClients           8192
    ThreadsPerChild      256
   MaxRequestsPerChild  10000
</IfModule>
 
在keep alive on的情况下,重新进行昨天的比较,结果如下:

 
结果显示:apache2的负载与nginx类似。

  评论这张
 
阅读(945)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017