非常に強力なサーバー (32 コアの CPU、96 GB の RAM) があり、apache が prefork モードで実行されています。apache2.conf ファイルには次のような設定が含まれています。
<IfModule mpm_prefork_module>
StartServers 2
MinSpareServers 5
MaxSpareServers 20
ServerLimit 3000
MaxClients 3000
MaxRequestsPerChild 1000
</IfModule>
問題は、Web サイトの負荷が高い場合 (正確には apache プロセス数が 1000 に達した場合) (または StartServers を 1000 を超えて設定した場合)、apache2 がフリーズし、再起動する必要があることです。それでも RAM は十分にあり、CPU は十分に活用されておらず、Apache プロセス数は maxclients をはるかに超えています。
私の質問は、apache が conf ファイルで構成された maxclients に到達できるようにするにはどうすればよいですか?
/etc/security/limits.conf を使って、最大オープン ファイルと nprocs を 5000 に設定したことを考慮してください (ulimit -a は、これらの値が十分に考慮されていることを示しました)。
/var/log/apache2/error.log にエラーが表示されない