Zombie-Prozesse

Alle weiteren Dienste, die nicht in die drei oberen Foren gehören.
Antworten
Benutzeravatar
pangu
Beiträge: 1400
Registriert: 15.11.2011 20:50:52
Lizenz eigener Beiträge: GNU General Public License
Wohnort: /proc/1

Zombie-Prozesse

Beitrag von pangu » 18.07.2013 07:31:15

Guten Tag DF,

ich habe auf einem Server 15 Zombie-Prozesse und hab keine Ahnung was das sein soll. Vom Begriff her würde ich sagen, dass es Prozesse sind,die nicht ordnungsgemäß oder wie erwartet beendet wurden und einfach noch rumgeistern :P wie verfährt man mit solchen Prozessen? Einfach killen oder besteht die Gefahr dass dadurch Daten nicht auf die HD geschrieben werden könnten?

Code: Alles auswählen

root     29176  0.0  0.0      0     0 ?        Z    Jul17   0:00 [pdflush] <defunct>
root     29179  0.0  0.0      0     0 ?        Z    Jul17   0:00 [pdflush] <defunct>
root     29182  0.0  0.0      0     0 ?        Z    Jul17   0:00 [pdflush] <defunct>
root     29184  0.0  0.0      0     0 ?        Z    Jul17   0:00 [pdflush] <defunct>
root     29186  0.0  0.0      0     0 ?        Z    Jul17   0:00 [pdflush] <defunct>
root     29235  0.0  0.0      0     0 ?        Z    Jul17   0:00 [pdflush] <defunct>
root     29236  0.0  0.0      0     0 ?        Z    Jul17   0:00 [pdflush] <defunct>
root     29239  0.0  0.0      0     0 ?        Z    Jul17   0:00 [pdflush] <defunct>
root     29242  0.0  0.0      0     0 ?        Z    Jul17   0:00 [pdflush] <defunct>
root     29243  0.0  0.0      0     0 ?        Z    Jul17   0:00 [pdflush] <defunct>
root     29289  0.0  0.0      0     0 ?        Z    Jul17   0:00 [pdflush] <defunct>
root     29290  0.0  0.0      0     0 ?        Z    Jul17   0:00 [pdflush] <defunct>
root     29380  0.0  0.0      0     0 ?        Z    Jul17   0:00 [pdflush] <defunct>
root     29387  0.0  0.0      0     0 ?        Z    Jul17   0:00 [pdflush] <defunct>
Bin für jeden Tip dankbar.
Man gibt Geld aus, das man nicht hat, um damit Dinge zu kaufen, die man nicht braucht, um damit Leute zu beeindrucken, die man nicht mag.

Dot
Beiträge: 124
Registriert: 22.10.2010 22:20:42
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Gießen

Re: Zombie-Prozesse

Beitrag von Dot » 18.07.2013 09:38:02

Hi Pangu,

kurze, vereinfachte technische Erklärung.
Alle Prozesse leiten sich in deinem Linux System von einem anderen ab. Der zuerst gestartete Prozess ist "init".
Von diesem leiten sich dann wieder andere ab, und von Kindprozessen von intit können sich wiederum andere ableiten.
(kann man sich sehr schön mit dem Befeh "pstree" anschauen.)

Also das heist einem Prozess stehen verschiedene Syscalls zur Verfügung mit denen er (Liste unvollständig) ...
- Eine (exakte) Kopie von sich selbst erzeugt: " fork()"
- Sich selbst beendet: "exit()"
- Den Speicherinhalt des laufenden Prozesses ersetzt: "exec()"
- Auf das Ende (s)eines Kindprozesses wartet: "wait()"

So, da jetzt einige Syscalls bekannt sind, hier eine (nur oberflächliche und auf das wichtigste beschränkte) Beschreibung zur Erzeugung
eines Prozesses:
- Vaterprozess ruft fork() auf und erzeugt somit einen Kindprozess (exakte Kopie) von sich selbst.
- Der Kindprozess ruft exec() auf, ersetzt seinen Speicherinhlat mit dem entsprechenden executable und führt dessen main() Mathode aus (startet es sozusagen)
- Der Vater wartet nun mittels wait() auf die Terminierung des Kindes.

Terminiert nun der Kindprozess wird immer noch sein Prozesstabellen-Eintrag behalten und erst enfernt wenn der Vater mittels
wait() den Status des Kindes abgefragt hat. So einen Prozess nennt man Zombie.

Ich hoffe das beantwortet einen Teil deiner Frage.

Viele Grüße
dot
Notebook: Debian Wheezy / i3-WM
"Höflichkeit ist Klugheit, folglich ist Unhöflichkeit Dummheit." (Arthur Schopenhauer)

Benutzeravatar
pangu
Beiträge: 1400
Registriert: 15.11.2011 20:50:52
Lizenz eigener Beiträge: GNU General Public License
Wohnort: /proc/1

Re: Zombie-Prozesse

Beitrag von pangu » 18.07.2013 09:44:47

Hallo und danke fuer diese -fuer mich schon sehr ausfuehrliche- Erklaerung. Wenn ich das jetzt aus meinen Zombieprozessen interpretieren kann, dann haben die ja nicht denselben Vaterprozess? wie loese ich nun dieses Problem? einzeln mit kill <pidnumber> diese Zombies killen?
Man gibt Geld aus, das man nicht hat, um damit Dinge zu kaufen, die man nicht braucht, um damit Leute zu beeindrucken, die man nicht mag.

Dot
Beiträge: 124
Registriert: 22.10.2010 22:20:42
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Gießen

Re: Zombie-Prozesse

Beitrag von Dot » 18.07.2013 10:01:34

Hmmm also da bin etwas überfragt ob man pdflush so einfach "killen" sollte.
Da werden dir andere Forumsteilnehmer sicherlich einiges mehr zu sagen können.

pdflush (wieder oberflächliche Beschreibung) cached (aus Performance Gründen) z.B. auf Festplatte zu schreibende Datenblöcke in einem Page-Cache (auch dirty-pages genannt). Die pdflush Prozesse sind dafür verantwortlich, dass die Daten aus den Dirty-Pages
geholt und auf die Festplatte geschrieben werden.
Notebook: Debian Wheezy / i3-WM
"Höflichkeit ist Klugheit, folglich ist Unhöflichkeit Dummheit." (Arthur Schopenhauer)

cosmac
Beiträge: 4576
Registriert: 28.03.2005 22:24:30

Re: Zombie-Prozesse

Beitrag von cosmac » 18.07.2013 10:55:47

hi,

Kann man zombies überhaupt töten?
Kann man Kernel-Prozesse überhaupt töten?
Aber selbst wenn, ich würde es nicht tun. Solange es nur 15 sind, stören die doch nicht. Die entscheidende Frage ist ja, was ist aus ihrem Vater geworden, warum kümmert sich der nicht um sie?

Evt. bekommt man mit "head /proc/29176/status" die PPid des Vaters und dann mit "head /proc/<ppid>/status" mehr Info. Die PPid sollte bei allen zombies die gleiche sein (bei einem neueren Kernel ist es die 2, der Prozess heißt kthreadd).
Beware of programmers who carry screwdrivers.

Dot
Beiträge: 124
Registriert: 22.10.2010 22:20:42
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Gießen

Re: Zombie-Prozesse

Beitrag von Dot » 18.07.2013 11:07:48

Also eigentlich kann man einen Zombieprozess nicht töten , da er ja bereits terminiert hat.
Ich denke man müsste dann entweder seinen Elternprozess "töten" oder ihn neu starten.

Aber bestimmt gibt es auch wieder zahlreiche Lösungen wie so etwas doch irgendwie geht :)

Gruß
dot
Notebook: Debian Wheezy / i3-WM
"Höflichkeit ist Klugheit, folglich ist Unhöflichkeit Dummheit." (Arthur Schopenhauer)

Benutzeravatar
pangu
Beiträge: 1400
Registriert: 15.11.2011 20:50:52
Lizenz eigener Beiträge: GNU General Public License
Wohnort: /proc/1

Re: Zombie-Prozesse

Beitrag von pangu » 18.07.2013 11:18:01

Code: Alles auswählen

# head /proc/29176/status
Name: pdflush
State: Z (zombie)
SleepAVG: 147%
Tgid: 29176
Pid: 29176
PPid: 12807
TracerPid: 0
Uid: 0 0 0 0
Gid: 0 0 0 0
FDSize: 0

Code: Alles auswählen

# head /proc/12807/status
Name: pdflush
State: S (sleeping)
SleepAVG: 147%
Tgid: 12807
Pid: 12807
PPid: 1
TracerPid: 0
Uid: 0 0 0 0
Gid: 0 0 0 0
FDSize: 32
Was heißt das jetzt? :-)
Man gibt Geld aus, das man nicht hat, um damit Dinge zu kaufen, die man nicht braucht, um damit Leute zu beeindrucken, die man nicht mag.

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: Zombie-Prozesse

Beitrag von rendegast » 18.07.2013 11:39:33

The jobs of pdflush threads are used to write data out from dirty page caches to disk.
Einstellungen bezüglich VM getätigt?
Sonstige sysctl- / sysfs-Einstellungen?

Systemauslastung?
Die Erzeugung der pdflush vielleicht laufenden Prozessen zuzuordnen,
zBsp. in der Art Prozeßaktivität -> pdflush-Zombie bleibt zurück?

dmesg -> Platten- oder Speicherfehler?
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

Benutzeravatar
pangu
Beiträge: 1400
Registriert: 15.11.2011 20:50:52
Lizenz eigener Beiträge: GNU General Public License
Wohnort: /proc/1

Re: Zombie-Prozesse

Beitrag von pangu » 06.08.2013 15:04:58

Hallo Rendegast.

Da ich nun schon wieder diese Zombie-Prozesse habe stehe ich wieder vor dem selben Problem. Ich weiß ja nicht einmal, ob diese Zombie-Prozesse störend sind oder nicht. Aufmerksam werde ich immer durch die Nagios-Warnung, welche durch diese Zombie-Prozesse ausgelöst wird. Aktuell habe ich wieder sieben Zombie-Prozesse ...
# ps aux |grep [p]dflush
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 9502 0.0 0.0 0 0 ? Z Aug05 0:00 [pdflush] <defunct>
root 9543 0.0 0.0 0 0 ? Z Aug05 0:00 [pdflush] <defunct>
root 9581 0.0 0.0 0 0 ? Z Aug05 0:00 [pdflush] <defunct>
root 9586 0.0 0.0 0 0 ? Z Aug05 0:00 [pdflush] <defunct>
root 9689 0.0 0.0 0 0 ? Z Aug05 0:00 [pdflush] <defunct>
root 9694 0.0 0.0 0 0 ? Z Aug05 0:00 [pdflush] <defunct>
root 9695 0.0 0.0 0 0 ? Z Aug05 0:00 [pdflush] <defunct>
- Was meintest du mit deiner "Einstellungen bezüglich VM getätigt"-Frage ?
- Bezüglich sysctl hier einige Ausgaben, ich weiß nicht ob das aussagekräftig ist. Wenn nicht, sag mir bitte was du für Info benötigst. (Erinnerung: es handelt sich um SLES9)

Code: Alles auswählen

cat /etc/sysconfig/sysctl | egrep -v "^\s*(#|$)"
IP_DYNIP="no"
IP_TCP_SYNCOOKIES="yes"
IP_FORWARD="yes"
IPV6_FORWARD="no"
IPV6_PRIVACY="no"
IPV6_MLD_VERSION=""
DISABLE_ECN="yes"
ENABLE_SYSRQ="no"

Code: Alles auswählen

cat /etc/sysctl.conf
# Disable response to broadcasts.
# You don't want yourself becoming a Smurf amplifier.
net.ipv4.icmp_echo_ignore_broadcasts = 1
# enable route verification on all interfaces
net.ipv4.conf.all.rp_filter = 1
# enable ipV6 forwarding
#net.ipv6.conf.all.forwarding = 1
fs.file-max = 330534
- top zeigt mir ein load average von 0.02, 0.02, 0.00 an. Jedoch sehe ich, daß geswappt wird, siehe hier...

Code: Alles auswählen

cat /proc/swaps 
Filename Type Size Used Priority
/dev/xvda1 partition 987956 48056 42
wobei das jedoch nicht mal eine Warnung ausgelöst hat bei Nagios, denn die Warnung wird erst ab einem Swap bei <20% ausgelöst (critical ab <10%) Ich kann mir nur vorstellen, dass diese Zombie-Prozesse irgendwie von smbd abhängen, oder eben halt Samba weil dieser Host hauptsächlich Samba-Dienste leistet (=PDC). Es läuft noch cups und slapd. Wie kann ich denn zu 100% feststellen, von welchem Prozess ein Zombie stammt, das ist also gar nicht so einfach nachvollziehbar?

- dmesg (bzw. /var/log/messages zeigt mir keine auffälligen Fehler, die auf Plattenprobleme deuten...)
Man gibt Geld aus, das man nicht hat, um damit Dinge zu kaufen, die man nicht braucht, um damit Leute zu beeindrucken, die man nicht mag.

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: Zombie-Prozesse

Beitrag von rendegast » 06.08.2013 18:13:04

(Erinnerung: es handelt sich um SLES9)
Laufende Programme auch alle SLES?
Entspricht dessen letztem Upgradestand?
-> hier evtl. insbesondere Kernel.
http://www.westnet.com/~gsmith/content/ ... dflush.htm

root 9502 0.0 0.0 0 0 ? Z Aug05 0:00 [pdflush] <defunct>
root 9543 0.0 0.0 0 0 ? Z Aug05 0:00 [pdflush] <defunct>
root 9581 0.0 0.0 0 0 ? Z Aug05 0:00 [pdflush] <defunct>
root 9586 0.0 0.0 0 0 ? Z Aug05 0:00 [pdflush] <defunct>
root 9689 0.0 0.0 0 0 ? Z Aug05 0:00 [pdflush] <defunct>
root 9694 0.0 0.0 0 0 ? Z Aug05 0:00 [pdflush] <defunct>
root 9695 0.0 0.0 0 0 ? Z Aug05 0:00 [pdflush] <defunct>
Vielleicht mal 'top -b' o.ä. einen ganzen Tag loggen
(24*50MB ?, entsprechend gefiltert oder vorbereitet gewaltig weniger)
und betreffende Stellen begutachten?
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

Antworten