PHP-Prozesse beschränken

Apache, Lighttpd, nginx, Cherokee
jabba
Posts: 33
Joined: 2006-08-31 01:55

PHP-Prozesse beschränken

Post by jabba » 2006-11-09 10:56

Hallo

betreibe:
Debian Sarge 3.1 mit Apache 2.0 und PHP über suPHP (safemode=on).
Alles orginal aus den Debian-Paketen installiert.


Problem: Es gibt in einem Vhost ein Web bei dem es immer wieder vorkommt, das ein PHP-Prozess nicht beendet wird. Die Laufzeit ist in der php.ini mit 60 sec eingestellt, aber dieses wirkt hier merkwürdigerweise nicht (sonst funktioniert es). Der PHP-Prozess zieht dabei auch noch 100% CPU-Last.

Habe versucht über die limits.conf diesen User einzuschränken, aber das funkioniert in diesem Fall nicht, weil PHP nichts mit PAM zu tun hat.

Was kann man noch machen?
Habe überlegt ein kleines Script aufzusetzen, was regelmäßig über cron die Prozessliste ausliest und die PHP-Prozesse eines Users abricht, wenn die Laufzeit dort einen Grnzwert überschreitet. Hat hier jemand einen Ansatz, wie man das macht oder gibt es ähnliche Scripte/Überwachungstools bereits.

lucki2
Posts: 427
Joined: 2006-10-03 01:31

Re: PHP-Prozesse beschränken

Post by lucki2 » 2006-11-20 01:44

Typischer Fall wäre ein Script, welches auf eine Systemresource warted, die nicht zurückkehrt.
Die Prozessorlast spricht sehr dafür. PHP kommt nicht mehr zum Zuge um das Timeout festzustellen.

Was dagegen machen: Fehler suchen, Debugmessages einbauen(z.B. einfach mit regex an alle Funktionsanfänge eine Ausgabe, in der Datei und Zeile steht, oder eine Funktion aufrufen, welche den Stacktrace nutzt um schnell eine Debugmessage zu generieren - fix gemacht). Schauen, wo er stehen bleibt. Evtl Profiler einsetzen.

danu
Posts: 263
Joined: 2005-02-02 11:15

Re: PHP-Prozesse beschränken

Post by danu » 2006-11-20 01:51

Sicher mal den betreffenden User informieren. Mit mod_security das Script sperren.