Apache 2.4 schließt keine Verbindungen

7

Ich habe einen Apache 2.4- Webserver, der auf einer Mikroinstanz von AWS mit CentOS ausgeführt wird.
Auf dem Apache wird PHP mit einem Prefork-MPM-Modul ausgeführt.
Auf den Server wird über einen Amazon Load Balancer zugegriffen, der über eine Integritätsprüfung verfügt, die alle 60 Sekunden versucht, auf die index.php-Webseite des Servers zuzugreifen.

Das Problem ist, dass Apache nach 1-2 Tagen irgendwie 256 geöffnete Prozesse mit der Seite index.php erreicht und den folgenden Fehler ausgibt:

[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

In diesem Fall werden normalerweise keine neuen http-Verbindungen mehr akzeptiert.

Apache schließt wahrscheinlich nicht alle Verbindungen des Load Balancers.
Wir haben einen anderen Server mit Apache 2.2, der dieses Problem nicht hat. Wahrscheinlich liegt das Problem bei der Version 2.4, die sich stark von 2.2 unterscheidet (wir haben keine Standardkonfigurationen von Apache geändert).

mod_status ist aktiviert und hier ist die Ausgabe, die wir erhalten könnten, wenn dies einmal passiert ist: http://www.speedyshare.com/vE3My/server-status.txt

Weiß jemand, wie wir dieses Problem angehen können?

Danke im Voraus!

Edi
quelle
Welche Maßnahmen haben Sie ergriffen, nachdem Sie diesen Fehler gelesen haben?
Drew Khoury
Es akzeptiert keine TCP-Verbindungen, wenn httpd keine untergeordneten Prozesse mehr bereitstellen kann. Überprüfen Sie die mpm_common , fügen Sie die Zeilengruppe ein<IfModule prefork.c> und überprüfen Sie die Anzahl Ihrer ausgeführten httpd-Prozesse. Möglicherweise müssen Sie Anpassungen vornehmen ServerLimit.
Shawmzhu
@DrewKhoury, ich musste Apache neu starten, ich hatte keine andere Option.
Edi
1
@shawnzhu, Das Problem liegt nicht am Verbindungslimit, sondern daran, dass Apache dieses Limit erreicht. Es sollte diese Verbindungen schließen, aber irgendwie hält es sie offen.
Edi
Haben Sie eine Lösung gefunden? Ich habe das gleiche Problem mit dem gleichen Setup.
Iuri

Antworten:

1

Ich habe festgestellt, dass Apache-Prozesse anschwellen (Speicherverlust), wenn sie auf unbestimmte Zeit wiederverwendet werden. Es lohnt sich, eine MaxRequestsPerChild 200in Ihrer httpd.conf festzulegen und neu zu starten.

cormpadre
quelle