web-dev-qa-db-ja.com

Apache2.4が接続を閉じない

CentOSを使用するAWSのマイクロインスタンスで実行されるApache 2.4ウェブサーバーがあります。
ApacheはプリフォークMPMモジュールでPHPを実行しています。
サーバーは、60秒ごとにサーバーのindex.phpWebページにアクセスしようとするヘルスチェックを備えたAmazonロードバランサーを介してアクセスされます。

問題は、1〜2日後、Apacheがindex.phpページで256の開いたプロセスに到達し、次のエラーが発生することです。

[Sun Sep 08 02:13:00.356051 2013] [mpm_prefork:error] [pid 1201] (12)Cannot allocate memory: AH00159: fork: Unable to fork new process
[Sun Sep 08 02:13:13.656694 2013] [mpm_prefork:error] [pid 1201] AH00161: server reached MaxRequestWorkers setting, consider raising the MaxRequestWorkers setting

通常、これが発生すると、新しいhttp接続は受け入れられなくなります。

Apacheはおそらくロードバランサーのすべての接続を閉じません。
Apache 2.2を搭載した別のサーバーがありますが、この問題はありません。おそらく問題は、2.2とは大きく異なる2.4バージョンにあります(Apacheのデフォルト構成は変更していません)。

mod_statusが有効になっており、これが1回発生したときに取得できる出力は次のとおりです。 http://www.speedyshare.com/vE3My/server-status.txt

誰かがこの問題にどのように取り組むことができるか知っていますか?

前もって感謝します!

7
Edi

Apacheプロセスが無期限に再利用されると、プロセスが膨張(メモリリーク)することがわかりました。httpd.confにMaxRequestsPerChild 200を設定して、再起動する価値があります。

1
cormpadre