Apache的进程与线程讨论

自从apache2.0出来之后,跑线程成了一个相当理想的方式,因此直到今天早上我还是一直认为进程模式要逊色于线程模式。但是从今天的实际使用情况来看,进程模式在某些地方还是要优于线程的。

实例:
在一台Sun的U80的机器上,虽然老了一点,但是跑个apache+php应该问题不大吧:)内存2G
原来这台机器上跑得是apache1.1.12+php4.0.1很老了。一直这样跑了几年了,一直没有出什么问题。但是现在访问量加大,而当时编译的时候没有修改httpd.h,因此MaxClint最大只能支持到256,而不能满足需求了,否则访问速度奇慢无比。由于以前的思想固化认为跑线程一定性能更好,而且2.0不需要修改源码,随便设置:)。因此就重新编译了apache2.0.50+php4.3.8,由于一直使用worker的MPM方式,其他MPM,一直觉得一般,这次也照旧拉。。。:)。编译安装完成之后,配置MPM,设了3个参数:
MaxClient                            1000 
ThreadsPerChild                  25
ServerLimit                          40

这个设置我认为不是很过分吧。。。最多限制起40个进程,每个进程含有25个线程。
可是实际情况很糟,load average开始迅速串升,最高到了200多。。。该死,那我想可能参数设的太大了,我从小开始设起总行了吧:
MaxClient                             300
ThreadsPerChild                   30
ServerLimit                           10

还是不行。load average还是会上串。。。
还试了一些参数包括很变态的把ThreadsPerChild设成1,而ServerLimit设成300,还是会上串。
把ServerLimit设成200,ThreadsPerChild还是1的情况也没有apache1.x好。
最后我只能重新编译apache和php,选择1.3.31,修改httpd.h,把最大连接支持到2560,编译完成后MaxClient设成800,ps -ef|grep -i httpd|wc -l 大概数字在500附近,load average也比较正常。没有超过10,一般稳定在5左右。

当然需要申明的是:线程模式在机器性能比较高的情况下,特别是cpu比较高的情况下确实要比进程要好。不过还有一点需要考虑的是,我这边的页面需要和oracle数据库以及java程序打交道,因此可能这样的页面使用进程比较好。这是我的一点想法,欢迎驳斥我!指出我理解有偏颇的地方!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值