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文件
StartServers 8 //启动工作的进程 ServerLimit 1000 //最大并发不能超过多少 MinSpareServers 25 //预留的最小空闲进程 MaxSpareServers 75 //预留的最大空闲进程 MaxClients 1000 //每秒同时允许多少个链接,<5000也和带宽有关 MaxRequestsPerChild 10000 //每个进程可以处理的最大进程默认是Prefork模式,只有上面的生效 StartServers 2 MaxClients 150 MinSpareThreads 25 MaxSpareThreads 75 ThreadsPerChild 25 //每个进程可以支持多少个线程 MaxRequestsPerChild 0
注:默认为Perfork工作模式,安装apache时可指定
./configure ----with-mpm=MPM
查看apache工作模式,源码可使用:
[root@test extra]# /usr/local/apache2/bin/httpd -l //可以查看源码安装的模块,如果有prefork.c说明是prefork模块
yum安装可直接查看http-mpm.conf这个文件,里面有prefork即是这种模式