本文主要是介绍apache的prefork和worker模式详解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
apache 的 prefork 和 worker 模式详解
什么是 prefork 模式
这个多路处理模块(MPM) 实现了一个非线程型的、预派生的web 服务器,
它的工作方式类似于Apache 1.3 。
它适合于没有线程安全库,
需要避免线程兼容性问题的系统。
它是要求将每个请求相互独立的情况下最好的MPM ,
这样若一个请求出现问题就不会影响到 其他请求。
这个MPM 具有很强的自我调节能力,只需要很少的配置指令调整。
最重要的是将MaxClients 设置为一个足够大的数值以处理潜在的请求高峰,
同时又不能太大,以致需要使用的内存超出物理内存的大小。
说的简单点就是用进程来处理http 请求,而不用线程来处理。
为什么要这样处理的原因是为了避免线程安全问题。
什么是 worker 模 式
此多路处理模块 (MPM) 使网络服务器支持混合的多线程多进程。
由于使用线程来处理请求,所以可以处理海量请求,
而系统资源的开销小于基于进程的 MPM 。
但是,它也使用了多进程,每个进程又有多个线程,
以获得基于进程的 MPM 的稳定性。
主要是启动多个进程,每个进程又可以启动好几个线程。
怎么样进程切换
怎么样切换
将当前的prefork 模式启动文件改名
cd /usr/local/apache/bin
mv httpd httpd.prefork
将worker 模式的启动文件改名
mv httpd.worker httpd
重新启动服务
/etc/init.d/httpd restart
即可换成worker 方式启动apache2
Prefork 参数设置
如果是源码安装的话此文件在/usr/local/apache/conf/extra/httpd-mpm.conf
<IfModule mpm_prefork_module>
StartServers 5 // 启动时开启的进程数目
MinSpareServers 5 // 保有的备用进程的最小数目
MaxSpareServers 10 // 保有的备用进程的最大数目
MaxClients 150 // 服务器允许启动的最大进程数
MaxRequestsPerChild 0 // 一个服务进程允许的最大请求数
</IfModule>
Worker 参数设置
<IfModule mpm_worker_module>
StartServers 2 // 服务器启动时的服务进程数目
MaxClients 150 // 许同时连接的最大用户数目
MinSpareThreads 25 // 保有的最小工作线程数目
MaxSpareThreads 75 // 允许保有的最大工作线程数目
ThreadsPerChild 25 // 每个服务进程中的工作线程常数
MaxRequestsPerChild 0 // 服务进程中允许的最大请求数目
</IfModule>
这篇关于apache的prefork和worker模式详解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!