apache2 の prefork「サーバーがビジー状態であるようです」という警告、StartServers、MaxSpare などの変更に応答しない

apache2 の prefork「サーバーがビジー状態であるようです」という警告、StartServers、MaxSpare などの変更に応答しない

序文:これはない「StartServers をどのように設定すればよいですか」という質問。

私は何年も問題なく稼働している Web サーバーを所有しており、先週、プローブと DDOS アクティビティの削減に CloudFlare を使い始めました。それ以来、Apache エラー ログに、典型的な「サーバーがビジー状態です」という StartServers の調整などのメッセージが大量に表示されるようになりました。これは、CloudFlare がバックグラウンドで大量の接続を行っているためだと思われます。おそらくキャッシュのためでしょう。そこで、StartServers、MinSpareServers などの数を徐々に増やし始めましたが、値を何に設定しても、サーバーは依然としてそのエラーを報告します。このサーバーが実際に mpm_prefork を実行していることを確認し、値を変更するたびにサーバーを再起動しました。apache.cfg ファイルにある関連値は次のとおりです。

KeepAlive On
MaxKeepAliveRequests 1000
KeepAliveTimeout 5


<IfModule mpm_prefork_module>
    StartServers          100
    MinSpareServers       100
    MaxSpareServers       150
    MaxClients            1000
    MaxRequestsPerChild   4000
</IfModule>

エラーが記録されている間、サーバーの負荷とトラフィックは軽いようです。netstat でピーク時に同時接続が 70 程度あるのがわかります。サーバーは 8GB の RAM のうち 1.5GB しか使用しておらず、CPU は低調で、ディスクとネットワークの IO は低い状態です。また、ピーク時には 10 から 20 のサーバーインスタンスが稼働しているのがわかります。

ps aux|grep apache2

サーバーの応答とページの読み込み時間は、いずれにしても良好なようです。

私の質問は、どの値も 100 未満ではないのに、通常 70 の接続しか表示されないのに、なぜ「サーバーがビジー状態です」というエラーが表示されるのかということです。Apache は apache2.conf ファイルの値を無視しているようです。

関連情報