Vor kurzem sind wir in ein neues Rechenzentrum umgezogen, bei dem Umzug habe ich direkt ein Upgrade durchgeführt. Bei einem Webserver von RHEL 3 auf Centos 5, von Apache 1.3 auf 2.2 und PHP 4 auf 5. War soweit ziemlich unproblematisch, zwar mussten einige PHP-Dateien angepasst werden, aber das war mit ein paar Scripten schnell erledigt.
Nach ein paar Tagen im produktiven Einsatz und ohne Apache restart, produzierte der Apache über 150 Prozesse (MaxClients). Danach war eine Connection nicht mehr möglich und brach mit einem Timeout ab. Auch mit dem tuning der Prefork-Optionen ließ sich das Verhalten nicht ändern.
Ein Umstieg auf eine threaded MPM kam nicht in Frage, die Konfiguration auf dem Server benötigt mod_php und die Migration auf eine moderne Apache Installation (FastCGI) ist ein bisschen zu viel des Guten (don’t touch a running system 😉 ). Der Server hat auch irgendwas mit 500 Vhosts.
Die Lösung war ganz einfach und innerhalb von wenigen Minuten implementiert:
Jetzt könnt ihr mal raten ab wann der Apache 1.3 lief.