网站首页 | 控制面板 | 短消息 | 搜索 | 会员 | 帮助 | 社区 | 首页 | 无图版


常州五颜六色网络技术有限公司 -> 技术文档 -> apache prefork模式 改为 worker模式 转到动态网页

--> 本页主题: apache prefork模式 改为 worker模式 加为IE收藏 | 收藏主题 | 上一主题 | 下一主题
deserts


头衔:大客部大客部

级别: 总版主
精华: 0
发帖: 327
威望: 2 点
金钱: 605 RMB
贡献值: 0 点
在线时间:328(小时)
注册时间:2006-01-01
查看作者资料 发送短消息 发送邮件 推荐此帖 引用回复这个帖子


apache prefork模式 改为 worker模式

新上的服务器流量不大却经常因为apache吃满内存而当机,在升级完linux核心,并加上防火墙后发现不是程序或是恶意攻击造成,而是因为Ubuntu在默认安装LAMP组合时apache使用的是prefork模式。


我们先分析下prefork的工作原理。下面是个很典型的prefork配置
QUOTE:
<IfModule prefork.c>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 150
MaxRequestsPerChild 0
</IfModule>


其中StartServers设置为5,意味着当apache服务开启的时候就启动5个进程。MinSpareServers则开启后需要备用的进程数,这里是5。
Max就是最大可以备用的进程数,这里是10。
当现有的进程数大于这个值并且处于sleeping状态时系统会自动进行回收,直到变为Min的值。
MaxClients是允许用户最大的并发数,默认最高为256,需要超过的时候在头上加一条
QUOTE:
ServerLimit ???

问号就是你需要的值,而MaxClients数值不能超过ServerLimit。其实这个ServerLimit就是prefork模式的瓶颈所在了,当这个值调整到1500以上的时候每当到达网站流量高峰的时候就会发现apache进程数量持续在一个很高的值上面,一旦硬件满足不了这个要求的时候就会出现网站无法访问或是速度很慢的情况。

虽然说可以写一份shell定时查看apache所占用的进程数,发现内存吃紧的时候就自动restart ,但这毕竟是下下策,在apache已经升级到2.2的时候其实可以考虑使用采用进程和线程混用的 worker模式来获得更好的性能,减少对硬件的消耗。

切换到mpm-worker模式

原本这应该是相当简单的事情,直接在Ubuntu里输入
QUOTE:
#apt-get install apache2-mpm-worker

但事实上如果这么执行就会导致php无法工作。一旦你再次安装php就让默认重新改变回prefork模式

在Google之后找到一个比较好的方法,就是使用fcgid模块来启用php。
具体操作

首先先安装模块
QUOTE:
#apt-get install libapache2-mod-fcgid

找到模块的设置文件,其位置在 /etc/apache2/mods-available/fcgid.conf,修改如成
QUOTE:
<IfModule mod_fcgid.c>
AddHandler fcgid-script .php .py .pl .fcgi
SocketPath /var/lib/apache2/fcgid/sock
IPCConnectTimeout 20
</IfModule>

这样就可以识别这些后缀的文件。

然后需要安装php5-cgi
QUOTE:
#apt-get install php5-cgi

再修改apache的全局设置文件,/etc/apache2/apache2.conf
QUOTE:
<Directory />
FCGIWrapper /usr/bin/php5-cgi .php
Options ExecCGI SymLinksIfOwnerMatch
</Directory>

最后就是安装worker模块
QUOTE:
#apt-get install apache2-mpm-worker

UBUNTU会自动删除原来的php5-gd,php5-mysql,你需要再重新装一次。
还需要注意的是,这样完成后原先的php.ini文件位置改成到/etc/php5/cgi下了

好了,经过以上的步骤就可以安全过渡到work模式了。从此apache就可以提供海量的线程服务了。


[ 此贴被deserts在2007-10-16 08:55重新编辑 ]


常州电信/网通机房,100M共享/10M独享/1000M共享/100M独享/电信+网通双线路服务器托管

Tel:0519-86605212 QQ:8732391   5y6s Inc.
[楼 主] Posted:2007-09-22 20:18| 顶端


 常州五颜六色网络技术有限公司 -> 技术文档


快速发帖 顶端
内容
HTML 代码不可用

使用签名
Wind Code自动转换

[查看帖子长度]
标题:
表情:


     按 Ctrl+Enter 直接提交   


[ 常州五颜六色网络技术有限公司 ]
Copyright © 2005-2007 5y6s Inc. 苏ICP备05001866号 Powered by PHPWind 5.0.1

☏:0519-6605212 QQ: 点击这里给我发消息 /点击这里给我发消息 /点击这里给我发消息