Setzt man auf einem Webserver sehr viele php-cgi Prozesse ein (allerdings nur mit einem Thread, da der eaccelerator sonst verrückt spielt), gibt es unter hoher Last diverse Probleme beim einfachen /etc/init.d/lighttpd restart
1. Problem:
es werden nicht alle php-cgi Prozesse beendet, bevor der lighty sich wieder startet
2. Problem (daraus resultierend):
die “alten” php-cgis greifen gemeinsam mit den neuen auf den eaccelerator cache zu. Wird dieser dann noch geleert, wird er aus irgendeinem Grund nicht mehr aufgebaut und der Webserver läuft ohne eaccelerator und wirft in regelmäßigen Abständen 500er Fehler.
Alles in allem, nicht sehr schön. Nun haben wir aber eine Lösung gefunden:
Die lightys werden nicht neugestartet, sondern erst gestoppt, dann wird ein killall -9 php-cgi ausgeführt, 2 Sekunden gewarten, dann nochmal den killall Befehl abgesetzt und zuletzt wird lighty wieder gestartet.
Bis jetzt sind wir mit dieser Lösung recht zufrieden, auch wenn es ein wenig länger dauert, alle 18 lightys durchzustarten.
Würde gerne wissen, warum lighty nicht in der Lage ist, alle php-cgi Prozesse zu killen, bevor er sich wieder startet.
November 19th, 2008 at 21:06
Hi,
habe deinen Vorschlag zeitweise umgesetzt. Ich habe das generelle Problem, dass der Server in unregelmäßigen Abständen instabil wird und teilweise nicht ansprechbar ist. Wenn doch, dann kann ich lighty neustarten und es funktioniert wieder für eine Weile.
Hast du xcache aktiviert? Welche Einstellungen? Ich habe nämlich derzeit die Vermutung, dass die slots für phps oder vars nicht ausreichen und das Anlegen neuer Slots problematisch sein könnte..
November 19th, 2008 at 21:12
wir nutzen kein xcache, gerade im high-trafic Bereich haben wir mit eAccelerator bessere Erfahrungen gemacht. Habe mittlerweile festgestellt, dass der lighty einfach nicht lange genug wartet. Teilweise würde es anscheinend langen den Lighty zu stoppen, zu warten und ihn dann zu starten. So 100%ig sind wir immernoch nicht durchgestiegen, was hier eigentlich passiert.
November 26th, 2008 at 22:45
Hi Michael,
wenn man den lighty startet, muss man ja mit CRTL + C fortführen, da sonst keine neue Eingabe möglich ist. Wie umgeht man das am besten scripttechnisch?
November 26th, 2008 at 22:50
Das Problem hat sich vonselbst erledigt, als wir ein Upgrade auf Lenny machten. Ich denke nicht, dass es an der lighty Version liegt, sondern eher am Kernel. Habe mich diesbezüglich schon auf diversen Mailinglisten rumgetrieben, aber nie ne ordentliche Lösung gefunden.
Als dann der neue Lenny Kernel (2.6.26 oder 28 glaube ich) lief, ging alles super, nur dass eben nun das im Beitrag genannte Problem auftritt, dass die php-cgis (wenn es viele sind), nicht schnell genug sterben.