概要
同時アクセス対策として、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の制限によって、requestに対応するworkerが割り当てられず、requestの処理が遅くなっている状態です。
MPM の確認
ApacheのMPM(Multi Processing Module)には、prefork
,worker
,event
の3種類があり下記のコマンドで確認できます。
httpd -V |grep MPM
Server MPM: event
MPM Eventの場合
デフォルトのServerLimit
は、16です。
ServerLimit x 25 = MaxRequestWorkers
となるように、/etc/httpd/conf/httpd.conf
にmpm_event_module
のIfModule
を追記してMaxRequestWorkers
および、ServerLimit
を設定します。
例:
20(ServerLimit
) x 25 = 500(MaxRequestWorkers
)
<IfModule mpm_event_module>
ThreadsPerChild 25
ServerLimit 20
MaxRequestWorkers 500
</IfModule>
MPM Preforkの場合
同様に、ServerLimit
を上げる必要があります。
参考
メモ
同時リクエスト数をカウントするコマンド
netstat -an |grep -e :80 -e :443 |wc -l