切换apache的prefork和worker模式

Apache HTTP服务器被设计为一个强大的、灵活的能够在多种平台以及不同环境下工作的服务器。 不同的平台和不同的环境经常产生不同的需求,或是为了达到同样的最佳效果而采用不同的方法。 Apache凭借它的模块化设计很好的适应了大量不同的环境。 这一设计使得网站管理员能够在编译时和运行时凭借载入不同的模块来决定服务器的不同附加功能。  Apache2.0将这种模块化的设计延伸到了web服务器的基础功能上。 这个版本带有多路处理模块(MPM)的选择以处理网络端口绑定、 接受请求并指派子进程来处理这些请求。 比如,需要更好伸缩性的可以选择象worker或event这样线程化的MPM, 而需要更好的稳定性和兼容性以适应一些旧的软件可以用prefork 。   在Redhat Linux的主要版本as4上,apache版本为httpd-2.0.5x, 默认为prefork模式,主要是考虑到稳定性的原因。 要切换到worker模式,则需要登录到linux上,进行如下操作:  进入/usr/sbin目录 cd /usr/sbin  将当前的prefork模式启动文件改名 mv httpd httpd.prefork  将worker模式的启动文件改名 mv httpd.worker httpd  修改配置文件vi /etc/httpd/conf/httpd.conf 找到里边的如下一段,可适当修改负载等参数: <IfModule worker.c> StartServers 2 MaxClients 150 MinSpareThreads 25 MaxSpareThreads 75 ThreadsPerChild 25 MaxRequestsPerChild 0 </IfModule>  重新启动服务 /etc/init.d/httpd restart  即可换成worker方式启动apache2 注意这里可能会遇到错误:

 

Apache is running a threaded MPM, but your PHP Module is not compiled to be threadsafe. You need to recompile PHP. Pre-configuration failed! 解决方法是将/etc/httpd/conf.d/php.conf文件中的LoadModule开头的那行代码注释掉。 --------------------------  注意:处于稳定性和安全性考虑,不建议更换apache2的运行方式,使用系统默认prefork即可 另外很多php模块不能工作在worker模式下,例如redhat linux自带的php也不能支持线程安全 所以最好不要切换工作模式

你可能感兴趣的:(apache,worker)