Apache bleibt regelmäßig hängen

Apache bleibt regelmäßig hängen

Ich habe einen kleinen, von Rackspace gehosteten Debian-VPS, auf dem mein persönlicher Webserver läuft. In den letzten Wochen kam es mehrmals vor, dass Apache (ich verwende 2.2.16) scheinbar auf unbestimmte Zeit hängen blieb. Ein Neustart von Apache /etc/init.d/apache2 restartlöst das Problem, bis es erneut auftritt. Aus diesem Grund bin ich ziemlich sicher, dass es kein Problem mit der DNS- oder virtuellen Verzeichniskonfiguration ist (nichts davon hat sich geändert, seit dies auftrat).

Manchmal sind nur dynamische Seiten mit PHP und MySQL betroffen und statische HTML-Seiten werden nur langsam geladen; manchmal bleiben alle Seiten auf unbestimmte Zeit hängen, bis ich Apache neu starte. Wenn ich in Chrome einen Tab geöffnet habe, kann es nach einer Weile zu einem Fehler mit ERR_CONNECTION_ABORTED kommen; wenn ich Apache neu starte, wird der Ladevorgang mit ERR_CONNECTION_RESET abgebrochen.

Es gibt nichts /var/log/apache2/error.logaußer Webcrawlern, die nach Dateien suchen, die nicht existieren. Zuerst dachte ich, es läge an einem RAM-Problem (256 MB, ich bin knausrig, aber der Datenverkehr liegt in der Größenordnung von ein paar hundert Zugriffen pro Tag, hauptsächlich Webcrawler), aber der Swap ist bei weitem nicht voll, die Apache-Prozesse sind im Leerlauf und obwohl sehr wenig freier Speicher vorhanden ist, ist er nach dem Laden einiger Seiten nach einem Apache-Neustart ungefähr gleich. Die Leistung ist akzeptabel, wenn es funktioniert, ich muss nur herausfinden, warum es nach ein paar Tagen Betriebszeit hängen bleibt.

Ich habe versucht, MaxClients zu reduzieren und MaxRequestsPerChild zu erhöhen, aber das hat nicht geholfen:

 <IfModule mpm_prefork_module>
     StartServers          2
-    MinSpareServers       2
-    MaxSpareServers       4
-    MaxClients           10
-    MaxRequestsPerChild 200
+    MinSpareServers       1
+    MaxSpareServers       2
+    MaxClients            4
+    MaxRequestsPerChild 2000
 </IfModule>

(Diese Einstellungen, sowohl alte als auch neue, und basierend auf einer Google-Suche gibt es eine Menge widersprüchlicher Informationen darüber, was eine sinnvolle Konfiguration ausmacht.)

Irgendeine Idee, wie ich herausfinden kann, was los ist? Wo kann ich am besten nach einem möglichen Deadlock suchen?

Nebenfrage: Da der VPS selbst in Ordnung ist, gibt es einen Cronjob, den ich lokal ausführen kann, der mich warnt, wenn Apache Probleme macht? (Ich brauche keinen umfangreichen externen Überwachungsdienst wie Pingdom.)

verwandte Informationen