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即是这种模式