关于 Apache mpm(多路处理模块)

 

       MPM 有多个,常用的有:prefork、worker、event、winnt,其中前3个用于类unix系统,后者为Windows系统设计使用,其他如:netware、mpmt_os2 等暂时笔者还没用过。

       查看当前使用的MPM模块:apachectl –l

       比较: prefork MPM 使用多个子进程,但每个子进程只有一个线程,每个进程也就只能保持一个正常连接,prefork 只需要很小的配置指令,效益很高,适用与没有线程安全库的系统。   worker MPM 也使用多个子进程,但每个子进程可以有多个线程,可以维持多个请求连接,很节省内存容量,但线程共享内存空间,容易一起崩溃。

      所以,Prefork 速度领先 worker 是以CPU资源和内存容量为代价的,鉴于worker 的稳定性和兼容性不及prefork ,现在主流默认是 prefork ,而 event 是一个标准workerMPM的实验性变种,被设计成面向需要处理大量并发连接的场合,目前主要是实验阶段。

      vim  /etc/httpd/extra/httpd-mpm.conf

prefork:

<IfModule mpm_prefork_module> 
    StartServers             6
    MinSpareServers          6
    MaxSpareServers         10
    MaxRequestWorkers      500
    MaxConnectionsPerChild   400

</IfModule> 


 MaxRequestWorkers 
最大进程数量 500
其他同下:
 

event:

<IfModule mpm_event_module> 
    StartServers            5
    MinSpareThreads         75
    MaxSpareThreads        250
    ThreadsPerChild         25
    MaxRequestWorkers      4000
    MaxConnectionsPerChild  2000
</IfModule> 

StartServers
      指定服务器启动时建立的子进程数量,默认一般都为:5

MinSpareThreads
      最小空闲线程数,默认值是"75"。这个MPM将基于整个服务器监视空闲线程数。如果服务器中总的空闲线程数太少,子进程将产生新的空闲线程。

MaxSpareThreads
      设置最大空闲线程数。默认值是"250"。这个MPM将基于整个服务器监视空闲线程数。如果服务器中总的空闲线程数太多,子进程将杀死多余的空闲线程。MaxSpareThreads的取值范围是有限制的。Apache将按照如下限制自动修正你设置的值:worker要求其大于等于MinSpareThreads加上ThreadsPerChild的和。

ThreadsPerChild
      每个子进程建立的常驻的执行线程数。默认值是25。子进程在启动时建立这些线程后就不再建立新的线程了

MaxRequestWorkers

   最大线程数量

MaxRequestsPerChild

    每个子进程在其生存期内允许伺服的最大请求数量, 如果设置为0,子进程将永远不会结束,这里不设置为0 主要为了防止内存泄漏。

你可能感兴趣的:(关于 Apache mpm(多路处理模块))