阿喆的博客空间 > 服务器运维 > linux服务器 >

关于apache的mpm-event的参数无法调整问题

 作者:阿喆 时间:2018-04-15

这其实是有两方面原因导致:
1.系统内核限制,主要是max user processes,这个参数默认为1024,意思是限制每个用户的最大进程使用数,如果超过此限制即使mpm的参数设置正确也会导致httpd服务无法启动。
我们通过ulimit -u 102400来设置

若设为开机启动,需要先更改/etc/security/limits.d/90-nproc.conf,此文件中nproc为进程的意思,将其修改为
*          soft    nproc     102400
然后再在/etc/rc.local中加入ulimit -u 102400
2.如果部分参数设置不正确,导致httpd服务器无法启动,至于如何调整在错误日志会有提示。
假设内核参数正常,我们以一个可以运行但是会有所warn的mpm-event来讲解下:
#<IfModule mpm_event_module>  
#    ServerLimit                100  
#    StartServers         20  
#    MinSpareThreads        25   
#   MaxSpareThreads      1200  
#    ThreadsPerChild      50   
#    MaxRequestWorkers    2000   
#    MaxConnectionsPerChild  10000   
#</IfModule>  
ThreadsPerChild默认为64,若需修改需要设置ThreadLimit,必须先stop apache,然后再start,否则配置无效。
MaxSpareThreads的参数设置,需要根据StartServers*ThreadsPerChild=1000,因此MaxSpareThreads必须大于1000,在此为1200,否则会有StartServers-MaxSpareThreads/ThreadsPerChild个进程被杀掉。
MaxRequestWorkers的参数设置,需要根据ServerLimit*ThreadsPerChild=5000,在此出我们设置为2000,启动后会有警告,我们根据提示将其改为5000即可。

如果我们发现服务器的负载有点高,大都是httpd占用的,而我们还有剩余系统资源,那么我们需要更改我们的参数了。

另外,如果我们的nginx反向代理httpd,而此时httpd由于负载高处理相关请求会进入队列等待,这就会造成nginx返回502 bad gateway,而其实这是由于后端服务器处理超时导致的,我们需要查看我们的后端服务器进行解决。

下一篇:Linux 磁盘挂载