init ne récoltant zombie / processus défunts
-
19-09-2019 - |
Question
Sur mon Fedora Core 9 avec le noyau 2.6.18 serveur web, init ne en tire pas les processus zombies. Ce serait supportable si ce n'était pas pour la table de processus pour finalement atteindre une limite supérieure où aucun nouveau processus peuvent être attribués.
Exemple de sortie de ps -el | grep 'Z'
:
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
5 Z 0 2648 1 0 75 0 - 0 exit ? 00:00:00 sendmail <defunct>
1 Z 51 2656 1 0 75 0 - 0 exit ? 00:00:00 sendmail <defunct>
1 Z 0 2670 1 0 75 0 - 0 exit ? 00:00:02 crond <defunct>
4 Z 0 2874 1 0 82 0 - 0 exit ? 00:00:00 mysqld_safe <defunct>
5 Z 0 28104 1 0 76 0 - 0 exit ? 00:00:00 httpd <defunct>
5 Z 0 28716 1 0 76 0 - 0 exit ? 00:00:06 lfd <defunct>
5 Z 74 10172 1 0 75 0 - 0 exit ? 00:00:00 sshd <defunct>
5 Z 0 11199 1 0 75 0 - 0 exit ? 00:00:00 sendmail <defunct>
5 Z 0 11202 1 0 75 0 - 0 exit ? 00:00:00 sendmail <defunct>
5 Z 0 11205 1 0 75 0 - 0 exit ? 00:00:00 sendmail <defunct>
5 Z 0 11208 1 0 75 0 - 0 exit ? 00:00:00 sendmail <defunct>
5 Z 0 11211 1 0 75 0 - 0 exit ? 00:00:00 sendmail <defunct>
5 Z 0 11240 1 0 75 0 - 0 exit ? 00:00:00 sendmail <defunct>
5 Z 0 11246 1 0 75 0 - 0 exit ? 00:00:00 sendmail <defunct>
5 Z 0 11249 1 0 75 0 - 0 exit ? 00:00:00 sendmail <defunct>
5 Z 0 11252 1 0 75 0 - 0 exit ? 00:00:00 sendmail <defunct>
1 Z 0 14106 1 0 80 0 - 0 exit ? 00:00:00 anacron <defunct>
5 Z 0 14631 1 0 75 0 - 0 exit ? 00:00:00 sendmail <defunct>
Est-ce un bug du système d'exploitation? misconfiguration? Je suis à la recherche d'inspiration à la source de ce problème. Merci
La solution
Cela m'a frappé sur Ubuntu de 2 façons:
-
Quelque chose ne va pas avec le noyau. Dans mon cas, un pilote du noyau était écrasé et de processus internes est allé bonkers. La meilleure façon de tester c'est la vérification / var / log / syslog (et dmesg) pour voir si quelque chose semble mal tourné - par exemple « BUG: incapable de gérer le pointeur NULL noyau déréférencer à 0000000000000028 »,
-
L'autre fois que je l'ai vu est quand init est pas le « parent du processus de l'enfant pour la plupart des » (citation réelle manpage). Cela peut se produire lorsque vous utilisez le syscall ptrace (que le programme strace utilise en interne) pour fixer un processus. Par exemple, je suis entré dans une situation où j'attache strace au processus enfant B. Finalement, le processus B se termine comme son parent (pas sûr quel ordre). Processus B ressemble alors à un zombie appartenant par init. Cependant, son parent « la plupart des fins » était en fait le programme strace. Après avoir tué le strace, le processus B fut moissonnée