apache修改并发线程数值

1、启用MPM模块配置文件

Apace安装目录/conf/extra/httpd-mpm.conf,这个文件主要用于进行MPM模块的相关配置。

2、在默认情况下,Apache的MPM模块配置文件并没有启用,因此我们需要在httpd.conf文件中启用该配置文件,如下所示:

Server-pool management (MPM specific)

Include conf/extra/httpd-mpm.conf
去掉 Include conf/extra/httpd-mpm.conf 前面的注释符号"#"(如果前面有#号的话)

3、在启动MPM模块配置文件后,我们就可以使用文本编辑器打开httpd-mpm.conf配置文件,在该配置文件中有许多配置节点,如下图所示:

4、 此时,我们就需要根据当前Apache服务器所使用的MPM模块(也就是Apache的工作模式),来修改对应节点下的参数配置:

五、mpm_winnt模块的配置

由于mpm_winnt模块只会创建1个子进程,因此这里对单个子进程的参数设置就相当于对整个Apache的参数设置。


ThreadsPerChild 150 #推荐设置:小型网站=1000 中型网站=1000~2000 大型网站=2000~3500
MaxRequestsPerChild 3000 #推荐设置:小型网站=10000 中型或大型网站=20000~100000

ThreadsPerChild 这个参数用于设置每个进程的线程数, 子进程在启动时建立这些线程后就不再建立新的线程了。一方面因为mpm_winnt不能启动多个进程,所以这个数值要足够大,以便可以处理可能的请求高峰; 另一方面该参数以服务器的响应速度为准的,数目太大的反而会变慢,因此需要综合均衡一个合理的数值。

mpm_winnt工作模式下,ThreadsPerChild的默认值是64,最大值是1920,这里建议设置为100-500之间,服务器性能高的话值大一些,反之值小一些。

MaxRequestsPerChild 这个参数表示每个子进程能够处理的最大请求数,即同时间内子进程数目,设置为零表示不限制。

mpm_winnt工作模式下,MaxRequestsPerChild的默认值就是0,官方参考手册中不建议设置为0,主要基于下面两点考虑:

可以防止内存泄漏(偶然的)无限进行,从而耗尽内存;
给进程一个有限寿命,从而有助于当服务器负载减轻的时候减少活动进程的数量。
六、 mpm_perfork和mpm_worker模块的配置
1、mpm_perfork模块


StartServers 5 #推荐设置:小型网站=默认 中型网站=20~50 大型网站=50~100
MinSpareServers 5 #推荐设置:与StartServers保持一致
MaxSpareServers 10 #推荐设置:小型网站=20 中型网站=30~80 大型网站=80~120
MaxClients 150 #推荐设置:小型网站=500 中型网站=500~1500 大型型网站=1500~3000
MaxRequestsPerChild 0 #推荐设置:小型网站=10000 中型或大型网站=10000~500000

此外,还需额外设置ServerLimit参数,该参数最好与MaxClients的值保持一致。


2、mpm_worker模块


StartServers 2 #推荐设置:小型网站=默认 中型网站=3~5 大型网站=5~10
MaxClients 150 #推荐设置:小型网站=500 中型网站=500~1500 大型网站=1500~3000
MinSpareThreads 25 #推荐设置:小型网站=默认 中型网站=50~100 大型网站=100~200
MaxSpareThreads 75 #推荐设置:小型网站=默认 中型网站=80~160 大型网站=200~400
ThreadsPerChild 25 #推荐设置:小型网站=默认 中型网站=50~100 大型网站=100~200
MaxRequestsPerChild 0 #推荐设置:小型网站=10000 中型或大型网站=10000~50000

此外,如果MaxClients/ThreadsPerChild大于16,还需额外设置ServerLimit参数,ServerLimit必须大于等于 MaxClients/ThreadsPerChild的值。


StartServers 启动Apache时创建的子进程数。

MinSpareServers 处于空闲状态的最小子进程数。所谓空闲子进程是指没有正在处理请求的子进程,如果当前空闲子进程数少于MinSpareServers,那么Apache将以最大每秒一个的速度产生新的子进程,只有在非常繁忙机器上才需要调整这个参数,此值不宜过大。

MaxSpareServers 处于空闲状态的最大子进程数。只有在非常繁忙机器上才需要调整这个参数,此值不宜过大,如果你将该指令的值设置为比MinSpareServers小,Apache将会自动将其修改成MinSpareServers+1。

MaxClients 允许同时连接的最大请求数量。任何超过MaxClients限制的请求都将进入等待队列,直到达到ListenBacklog指令限制的最大值为止。

对于非线程型的MPM(mpm_prefork),MaxClients表示可以用于处理客户端请求的最大子进程数量,默认值是256,要增大这个值,你必须同时增大ServerLimit。
对于线程型或者混合型的MPM(mpm_beos或mpm_worker),MaxClients表示可以用于处理客户端请求的最大线程数量,线程型的mpm_beos的默认值是50,对于混合型的MPM默认值是16(ServerLimit)乘以25(ThreadsPerChild)的结果。因此要将MaxClients增加到超过16个进程才能提供的时候,你必须同时增加ServerLimit的值。
MinSpareThreads 处于空闲状态的最小线程数。不同的MPM对这个指令的处理是不一样的,mpm_worker的默认值是75,这个MPM将基于整个服务器监视空闲线程数,如果服务器中总的空闲线程数太少,子进程将产生新的空闲线程。

MaxSpareThreads 处于空闲状态的最大线程数。不同的MPM对这个指令的处理是不一样的,mpm_worker的默认值是250,这个MPM将基于整个服务器监视空闲线程数,如果服务器中总的空闲线程数太多,子进程将杀死多余的空闲线程。

七、关于Apache的ServerLimit
ServerLimit表示Apache允许创建的最大进程数。 Apache在编译时内部有一个硬限制ServerLimit 20000(mpm_prefork模块为ServerLimit 200000),你不能超越这个限制。在设置ServerLimit时需要注意:如果将ServerLimit设置成一个高出实际需要许多的值,将会有过多的共享内存被分配,如果将ServerLimit和MaxClients设置成超过服务器的处理能力,Apache可能无法启动,或者系统将变得不稳定。

八、其他注意事项
在配置相关参数时,请先保证服务器具备足够的硬件性能(CPU、内存等)。 如果发现调整MPM模块参数后,服务器的内存占用不断增加(甚至满载),可能是程序中出现了内存泄露,遇到这种情况请调低参数MaxRequestsPerChild的值以降低内存泄露带来的影响,然后尽快找出程序中的问题所在。
————————————————
版权声明:本文为CSDN博主「幕尘枫」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq15577969/article/details/109702961

你可能感兴趣的:(apache修改并发线程数值)