Zombies zurückverfolgen?

FreeBSD, Gentoo, openSUSE, CentOS, Ubuntu, Debian
static
Posts: 437
Joined: 2002-10-27 19:56
Location: Schweiz

Zombies zurückverfolgen?

Post by static » 2007-01-26 12:11

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
Last edited by static on 2007-01-26 12:13, edited 1 time in total.

masterblupper
Posts: 7
Joined: 2007-01-25 12:50

Re: Zombies zurückverfolgen?

Post by masterblupper » 2007-01-26 13:55

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.

static
Posts: 437
Joined: 2002-10-27 19:56
Location: Schweiz

Re: Zombies zurückverfolgen?

Post by static » 2007-01-26 14:25

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.
Das ist mir klar, aber dadurch erfahre ich eben nicht allzuviel über den Prozess - geöffnete Files etc. wären da hilfreicher.
MasterBlupper wrote:Ich nehme mal an, dass du dich auf ein PHP-Prozess beziehst.
Naja wenn ich [php4] <defunct> Prozesse habe, ist das relativ eindeutig :lol:
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.
Wie oben geschrieben weiss ich um welche Website es sich handelt - nur nicht um welches Script.

static

dukepyrolator
Posts: 38
Joined: 2004-03-12 06:51

Re: Zombies zurückverfolgen?

Post by dukepyrolator » 2007-02-02 09:53

Man kann sich mit "lsof | grep <pid>" alle geöffneten Files eines bestimmten Prozesses anzeigen lassen.

elch_mg
Posts: 302
Joined: 2006-01-23 19:14
Location: 41063

Re: Zombies zurückverfolgen?

Post by elch_mg » 2007-02-02 10:10

lsof -p <pid> ;)

static
Posts: 437
Joined: 2002-10-27 19:56
Location: Schweiz

Re: Zombies zurückverfolgen?

Post by static » 2007-02-02 11:36

DukePyrolator wrote:Man kann sich mit "lsof | grep <pid>" alle geöffneten Files eines bestimmten Prozesses anzeigen lassen.
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.

dotme
Posts: 150
Joined: 2004-12-15 16:48

Re: Zombies zurückverfolgen?

Post by dotme » 2007-02-02 20:19

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.