ein Indianer vor der Park-Bahn

 

Das apache2-mpm-worker Modul (zumindest das in Version 2.2.16) auf einem Webserver, welcher ausschliesslich als Proxy zu anderen Webservern benutzt wird, lässt bei JKMounts und Proxy-Pass Pässen aus irgendwelchen Gründen immer wieder Verbindungen zu den Backends im CLOSE_WAIT Status.

Dies führt dazu, dass die Apache Threads blockiert bleiben und nach Erreichen des Threadlimits keine neuen Verbindungen mehr entstehen.

Das Problem scheint an Keep-Alive Requests zu liegen. Wenn man diese an den Proxy-Pass Backendservern deaktiviert werden alle Verbindungen geschlossen.

Bei JKMounts können in den worker.properties Keep-Alives am Proxyserver deaktiviert werden. Dies führt aber dazu, dass sich an den Backends ungeschlossene Verbindungen häufen und nach einigen Minuten der Backendserver nicht mehr erreicht werden kann.

Lösung: apache2-mpm-worker mit apache2-mpm-prefork ersetzen und alles funktioniert wie es soll!

Und noch ein Optimierungstipp um lästige Verbindungen wegen CSS und Bilderdateien loszuwerden:

In jeder HTTP-Response den Expire Header sinnvoll setzen:
<IfModule mod_expires.c>
   ExpiresActive on
   ExpiresByType image/jpg "access 2 days"
   ExpiresByType image/gif "access 2 days"
   ExpiresByType image/png "access 2 days"
   ExpiresByType text/css "access 2 days"
#   ExpiresByType text/html "access 2 minutes"
#   ExpiresDefault "access 1 hour"
</IfModule>


Somit werden jpg, gif, png und css im Webbrowser für 2 Tage gecacht.
Die letzen zwei Zeilen können im "Notfall" auskommentiert werden. Zum Beispiel, wenn das Google Doodle auf eine gehostete Seite linkt.

Bei einer Aktualisierung der CSS oder Bild-Dateien muss natürlich mindestens 2 Tage vorher die Konfiguration geändert werden, um keine veralteten Dateien in den Browsern zu verwenden.

Die zu aktivierenden Apache-Module sind: mod_expires und mod_headers.