Apacheのプロセス数が増えない時
Apacheの設定ファイルでは「MinSpareServers」を2048に設定しているのに、Apacheのプロセス数が1000ちょっとより多く生成されず、メモリを使い切れていない!という時の対応
ファイルディスクリプタ数を確認してみる
ファイルディスクリプタには上限値が設定されています。
うまくプログラムが動作しない場合などは、このファイルディスクリプタ数が不足している可能性がある為、上限値を変更する必要があります。
ファイルディスクリプタの上限値を確認する
ps aux | grep httpd | grep root
上記コマンドで、稼働中のhttpdの親プロセス番号を確認してください。
確認したら、以下コマンドでファイルディスクリプタの上限値を確認します。
cat /proc/[httpdの親プロセス番号]/limits
Max open filesが最大ファイルディスクリプタ数です。デフォルトは1024となっている場合が多いです。
これを変更することが出来れば、プロセスが1024以上稼働させることが出来るようになります。
ファイルディスクリプタの上限値を変更する
# mkdir /etc/systemd/system/httpd.service.d
# vi /etc/systemd/system/httpd.service.d/override.conf
# cat /etc/systemd/system/httpd.service.d/override.conf
[Service]
LimitNOFILE=65535
# systemctl daemon-reload
# systemctl restart httpd.service
再確認する
もう一度同じ手順でファイルディスクリプタを確認し、Max open filesが65535になっていればOKです。
ファイルディスクリプタの設定上限について
65535より大きな数は設定できません。