Apache prefork、work、event三种工作模式配置优化详解

三种工作模式配置详解及需要优化的关键配置

perfork MPM

<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxRequestWorkers 250
MaxConnectionsPerChild 0
</IfModule> 

StartServers:  数量的服务器进程开始

MinSpareServers:  最小数量的服务器进程,保存备用

MaxSpareServers:  最大数量的服务器进程,保存备用

MaxRequestWorkers:  最大数量的服务器进程允许开始

MaxConnectionsPerChild:  最大连接数的一个服务器进程服务

worker MPM

<IfModule mpm_worker_module>
StartServers 3
MinSpareThreads 75
MaxSpareThreads 250 
ThreadsPerChild 25
MaxRequestWorkers 400
MaxConnectionsPerChild 0
</IfModule>

StartServers:  初始数量的服务器进程开始

MinSpareThreads:  最小数量的工作线程,保存备用

MaxSpareThreads:  最大数量的工作线程,保存备用

ThreadsPerChild:  固定数量的工作线程在每个服务器进程

MaxRequestWorkers:  最大数量的工作线程

MaxConnectionsPerChild:  最大连接数的一个服务器进程服务

  Worker 由主控制进程生成“StartServers”个子进程,每个子进程中包含固定的ThreadsPerChild线程数,各个线程独立地处理请求。同样, 为了不在请求到来时再生成线程,MinSpareThreads和MaxSpareThreads设置了最少和最多的空闲线程数;

  而MaxRequestWorkers 设置了同时连入的clients最大总数。如果现有子进程中的线程总数不能满足负载,控制进程将派生新的子进程

  MinSpareThreads和 MaxSpareThreads的最大缺省值分别是75和250。这两个参数对Apache的性能影响并不大,可以按照实际情况相应调节 。

  ThreadsPerChild是worker MPM中与性能相关最密切的指令。ThreadsPerChild的最大缺省值是64,如果负载较大,64也是不够的。这时要显式使用 ThreadLimit指令,它的最大缺省值是20000。

  Worker模式下所能同时处理的请求总数是由子进程总数乘以ThreadsPerChild 值决定的,应该大于等于MaxRequestWorkers。如果负载很大,现有的子进程数不能满足时,控制进程会派生新的子进程。默认最大的子进程总数是16,加大时 也需要显式声明ServerLimit(最大值是20000)。需要注意的是,如果显式声明了ServerLimit,那么它乘以 ThreadsPerChild的值必须大于等于MaxRequestWorkers,而且MaxRequestWorkers必须是ThreadsPerChild的整数倍,否则 Apache将会自动调节到一个相应值。

event MPM

<IfModule mpm_event_module>
StartServers 3
MinSpareThreads 75
MaxSpareThreads 250
ThreadsPerChild 25
MaxRequestWorkers 400
MaxConnectionsPerChild 0
</IfModule> 

StartServers:初始数量的服务器进程开始

MinSpareThreads:  最小数量的工作线程,保存备用

MaxSpareThreads:  最大数量的工作线程,保存备用

ThreadsPerChild:  固定数量的工作线程在每个服务器进程

MaxRequestWorkers:  最大数量的工作线程

MaxConnectionsPerChild:  最大连接数的一个服务器进程服务

赞(1) 打赏
特别声明:除特殊标注,本站文章均为原创,遵循CC BY-NC 3.0,转载请注明出处。三伏磨 » Apache prefork、work、event三种工作模式配置优化详解

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏