Hi
Ich habe Probleme mit einer Webseite eines Kollegen. Irgendwelche PHP-Scripts verursachen mir die ganze Zeit [php4] <defunct> Prozesse. Gibt es irgendeine Möglichkeit herauszufinden bei welchen Scripts das genau passiert? Zuerst habe ich versucht über /proc/`pid` und lsof irgendwelche Daten herauszubekommen, aber anscheinend funktionieren die bei Zombies nicht mehr.
Die Webseite hat zudem relativ viele Besucher, sodass es schwierig ist, einen Zombie Prozess mit einem konkreten Seitenaufruf in Verbindung zu bringen.
Falls es hier keine sinnvolle Möglichkeit gibt, würde es mir vielleicht auch schon reichen, wenn mir jemand sagen könnte, unter welchen Bedingungen ein PHP-Script überhaupt zu einem Zombie werden kann? Dann hätte ich wenigstens irgendeinen Anhaltspunkt wonach ich suchen muss.
Gibt es eigentlich keinen Command der einem alle verfügbaren Infos über einen Prozess direkt auflistet?
Ah ja, ich betreibe Apache 2.0.54 mit suPHP 0.5.2 und PHP 4.3.10 auf Debian sarge.
Besten Dank
static
Zombies zurückverfolgen?
-
- Posts: 437
- Joined: 2002-10-27 19:56
- Location: Schweiz
Zombies zurückverfolgen?
Last edited by static on 2007-01-26 12:13, edited 1 time in total.
-
- Posts: 7
- Joined: 2007-01-25 12:50
Re: Zombies zurückverfolgen?
Hi,
"ps aux" zeigt dir ja schonmal den kompletten Programmpfad samt evntl. übergebener Parameter an für die Zombies. Mit "pstree -a" wiederum kannst du sehen, ob der Prozess evntl. durch ein anderen Prozess gestartet wurde.
Ich nehme mal an, dass du dich auf ein PHP-Prozess beziehst. Da ist die Sache natürlich schon etwas kniffliger. Da du suphp verwendest sollte man zumindest anhand des Benutzers, unter dem der PHP-Prozess läuft, feststellen lassen von welchem Account aus das PHP Script gestartet wird.
Damit sollte sich das ganze schonmal etwas imho eingrenzen lassen.
"ps aux" zeigt dir ja schonmal den kompletten Programmpfad samt evntl. übergebener Parameter an für die Zombies. Mit "pstree -a" wiederum kannst du sehen, ob der Prozess evntl. durch ein anderen Prozess gestartet wurde.
Ich nehme mal an, dass du dich auf ein PHP-Prozess beziehst. Da ist die Sache natürlich schon etwas kniffliger. Da du suphp verwendest sollte man zumindest anhand des Benutzers, unter dem der PHP-Prozess läuft, feststellen lassen von welchem Account aus das PHP Script gestartet wird.
Damit sollte sich das ganze schonmal etwas imho eingrenzen lassen.
-
- Posts: 437
- Joined: 2002-10-27 19:56
- Location: Schweiz
Re: Zombies zurückverfolgen?
Das ist mir klar, aber dadurch erfahre ich eben nicht allzuviel über den Prozess - geöffnete Files etc. wären da hilfreicher.MasterBlupper wrote:"ps aux" zeigt dir ja schonmal den kompletten Programmpfad samt evntl. übergebener Parameter an für die Zombies. Mit "pstree -a" wiederum kannst du sehen, ob der Prozess evntl. durch ein anderen Prozess gestartet wurde.
Naja wenn ich [php4] <defunct> Prozesse habe, ist das relativ eindeutig :lol:MasterBlupper wrote:Ich nehme mal an, dass du dich auf ein PHP-Prozess beziehst.
Wie oben geschrieben weiss ich um welche Website es sich handelt - nur nicht um welches Script.MasterBlupper wrote:Da du suphp verwendest sollte man zumindest anhand des Benutzers, unter dem der PHP-Prozess läuft, feststellen lassen von welchem Account aus das PHP Script gestartet wird.
static
-
- Posts: 38
- Joined: 2004-03-12 06:51
Re: Zombies zurückverfolgen?
Man kann sich mit "lsof | grep <pid>" alle geöffneten Files eines bestimmten Prozesses anzeigen lassen.
-
- Posts: 302
- Joined: 2006-01-23 19:14
- Location: 41063
Re: Zombies zurückverfolgen?
lsof -p <pid> ;)
-
- Posts: 437
- Joined: 2002-10-27 19:56
- Location: Schweiz
Re: Zombies zurückverfolgen?
Ich weiss, habe ich ja auch im ersten Post erwähnt, dass ich es damit versucht habe. Leider funktioniert das bei Zombies nicht bzw. erhalte ich jedenfalls keine Infos über geöffnete Dateien der Zombies.DukePyrolator wrote:Man kann sich mit "lsof | grep <pid>" alle geöffneten Files eines bestimmten Prozesses anzeigen lassen.
-
- Posts: 150
- Joined: 2004-12-15 16:48
Re: Zombies zurückverfolgen?
Hast Du mal überlegt "mod_log_forensic" (>= 2.0.50) einzusetzen. Ich kenne das nur aus der Doku, aber die lässt vermuten, daß Du Deine Requests eben an dem fehlenden abschließenden Logeintrag erkennst.