设置apache的MaxRequestWorkers以进行并发连接处理
摘要
为了同时处理多个请求,您可以将Apache的MaxRequestWorkers参数设置得更大。对于Apache 2.4版本,不再使用MaxClients参数,而是使用MaxRequestWorkers参数来达到同样的目的。
确认错误日志
首先,我们要确认一下是否存在由于Apache并发连接而导致的瓶颈。
cat /var/log/htttpd/error_log |grep MaxRequestWorkers
[Fri Jan 15 01:35:27.458186 2021] [mpm_event:error] [pid 38749:tid 140604360575296] AH00484: server reached MaxRequestWorkers setting, consider raising the MaxRequestWorkers setting
导致这个结果的原因
由于MaxRequestWorkers的限制,无法分配足够的工作线程来处理请求,导致请求的处理变慢。
确认MPM
Apache的MPM(多进程模块)有三种类型:prefork、worker和event。可以使用以下命令进行确认。
httpd -V |grep MPM
Server MPM: event
对于MPM Event的情况来说
デフォルトのServerLimit値は16です。/etc/httpd/conf/httpd.confファイルにmpm_event_moduleのIfModuleを追加し、MaxRequestWorkersとServerLimitの値をServerLimit × 25となるように設定します。
20(服务器限制)乘以25等于500(最大请求数量)。
<IfModule mpm_event_module>
ThreadsPerChild 25
ServerLimit 20
MaxRequestWorkers 500
</IfModule>
如果是使用MPM Prefork的情况下
同样,需要增加ServerLimit。
请参阅
备注
计算同时请求数量的命令
netstat -an |grep -e :80 -e :443 |wc -l