有关apache工作模式切换的方法,在linux下apache将prefork模式切换为worker模式的方法,两种模式的区别有哪些,感兴趣的朋友参考下。
apache中prefork模式和worker模式区别,以及工作模式的切换方法。 apache默认安装的模式是prefork。 服务器流量不大却经常因为apache吃满内存而当机,在升级完linux核心,并加上防火墙后发现不是程序或是恶意攻击造成,而是因为debian在默认安装apache使用的是prefork模式。 prefork的工作原理。
典型的prefork配置:
<IfModule prefork.c>
StartServers 5 MinSpareServers 5 MaxSpareServers 10 MaxClients 150 MaxRequestsPerChild 0 </IfModule>
其中StartServers设置为5,意味着当apache服务开启的时候就启动5个进程。MinSpareServers则开启后需要备用的进程数,这里是5。 ServerLimit ??? 问号就是你需要的值,而MaxClients数值不能超过ServerLimit。其实这个ServerLimit就是prefork模式的瓶颈所 在了,当这个值调整到1500以上时,每当到达网站流量高峰时,就会发现apache进程数量持续在一个很高的值上面,一旦硬件满足不了这个要求的时 候就会出现网站无法访问或是速度很慢的情况。
可以写一份shell定时查看apache所占用的进程数,发现内存吃紧时就自动restart。 切换到mpm-worker模式
原本这应该是相当简单的事情,直接在Ubuntu里输入:
#apt-get install apache2-mpm-worker
但事实上如果这么执行就会导致php无法工作。一旦你再次安装php就让默认重新改变回prefork模式。 使用fcgid模块来启用php。
首先,安装模块
#apt-get install libapache2-mod-fcgid
找到模块的设置文件,其位置在 /etc/apache2/mods-avaliable/fcgid.conf,修改为:
<IfModule mod_fcgid.c>
AddHandler fcgid-script .php .py .pl .fcgi SocketPath /var/lib/apache2/fcgid/sock IPCConnectTimeout 20 </IfModule> 如此,就可以识别这些后缀的文件。
然后,安装php5-cgi
#apt-get install php5-cgi
再修改apache的全局设置文件,/etc/apache2/apache2.conf
<Directory />
FCGIWrapper /usr/bin/php5-cgi .php Options ExecCGI SymLinksIfOwnerMatch </Directory>
最后,安装worker模块:
#apt-get install apache2-mpm-worker
debian会自动删除原来的php5-gd,php5-mysql,你需要再重新装一次。 注意,这样完成后原先的php.ini文件位置改成到/etc/php5/cgi下了。 完成以上步骤,即可安全过渡到work模式了。 至此,apache即可提供海量的线程服务了。 (责任编辑:IT) |