您的位置:首页 > 运维架构 > Apache

apache的两种常用工作模式

2016-10-26 12:53 183 查看
apache常用的工作模式有Prefork和Worker模式:1 在大多数平台上,Prefork MPM在效率上要比Worker MPM要高,但是内存使用大得多。prefork的无线程设计在某些情况下将比worker更有优势:它可以使用那些没有处理好线程安全的第三方模块,并且对于那些线程调试困难的平台而言,它也更容易调试一些。2 Worker模式:WorkerMPM 使用多个子进程,每个子进程有多个线程。每个线程在某个确定的时间只能维持一个连接。通常来说,在一个高流量的HTTP服务器上,Worker MPM是个比较好的选择,因为WorkerMPM的内存使用比Prefork MPM要低得多。Worker MPM也由不完善的地方,如果一个线程崩溃,整个进程就会连同其所有线程一起"死掉".由于线程共享内存空间,所以一个程序在运行时必须被系统识别为"每个线程都是安全的"。自我描述总结:

Apache常用的工作模式就两种,一种是prefork模式,一种是worker模式。这两种的工作模式的区别。perfork是以master进程生成子进程,每个子进程在一段时间内只接受一个链接,这个模式的优点是它比较稳定,进程之间相互独立,而且最大的不足这种模式比较占用内存。Worker模式以matser进程生成多个子进程,多个子进程同时会生成更多的线程,每个线程在一定时间内接受一个链接。优点:高流量大并发要使用worker模式缺点:进程中有一个线程挂了,那整个工作进程以及这个工作进程下面所有的线程都会挂掉,在这个进程上面的所有请求就断掉了
调试的配置文件为:
/usr/local/apache2/conf/extra/httpd-mpm.conf文件
<IfModule mpm_prefork_module>
StartServers          8    //启动工作的进程
ServerLimit           1000   //最大并发不能超过多少
MinSpareServers       25    //预留的最小空闲进程
MaxSpareServers      75     //预留的最大空闲进程
MaxClients          1000    //每秒同时允许多少个链接,<5000也和带宽有关
MaxRequestsPerChild   10000  //每个进程可以处理的最大进程
</IfModule>
默认是Prefork模式,只有上面的生效
<IfModule mpm_worker_module>
StartServers          2
MaxClients          150
MinSpareThreads      25
MaxSpareThreads      75
ThreadsPerChild      25   //每个进程可以支持多少个线程
MaxRequestsPerChild   0
</IfModule>

注:默认为Perfork工作模式,安装apache时可指定
./configure ----with-mpm=MPM
查看apache工作模式,源码可使用:
[root@test extra]# /usr/local/apache2/bin/httpd -l
//可以查看源码安装的模块,如果有prefork.c说明是prefork模块
yum安装可直接查看http-mpm.conf这个文件,里面有prefork即是这种模式
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  apache 工作模式