Зомби процессы

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модераторы: SLEDopit, Модераторы разделов

Enforcer
Сообщения: 99
ОС: Debian GNU/Linux

Зомби процессы

Сообщение Enforcer »

Никак не могу толком понять про зомби процессы.
То есть, откуда они берутся - понятно. Не понятно только, страшно это или не стоит обращать внимания?
У всех разное мнение, поэтому не могу толком понять.

В процессе иногда проскакивает apache2 <defunct>.
Собственно, это и есть зомби.

Опытные админы, скажите, насколько страшны эти зомби и как вообще от них можно избавиться?

Debian 5, apache2.
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: Зомби процессы

Сообщение serzh-z »

Enforcer писал(а):
22.04.2010 15:20
У всех разное мнение, поэтому не могу толком понять.
Т.е. Вас интересуют "другие" разные мнения?

Enforcer писал(а):
22.04.2010 15:20
скажите, насколько страшны эти зомби и как вообще от них можно избавиться?
Не страшны, они лишь *очень* немного (несколько байт) потребляют памяти под структуру данных. Больше ничего. Избавится - нельзя до тех пор, пока родительский процесс не запросит код завершения процесса-зомби. Либо пока родительский процесс не умрёт.
Спасибо сказали:
Enforcer
Сообщения: 99
ОС: Debian GNU/Linux

Re: Зомби процессы

Сообщение Enforcer »

serzh-z, но ведь у некоторых такой беды нету.
У меня до этого был VDS, там такого не было.

В любом случае спасибо, большинство людей как раз и говорили что ничего страшного в этом нет.
Просто не прикольно быть белой вороной, когда у большинства этого нет, а у меня - есть.
Спасибо сказали:
Аватара пользователя
diesel
Бывший модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian

Re: Зомби процессы

Сообщение diesel »

Перезагрузите сервер, и у вас снова их не будет. Ну или терпите :)
Спасибо сказали:
Enforcer
Сообщения: 99
ОС: Debian GNU/Linux

Re: Зомби процессы

Сообщение Enforcer »

diesel писал(а):
22.04.2010 15:48
Перезагрузите сервер, и у вас снова их не будет. Ну или терпите :)


Не будет сколько, несколько часов? Пару дней? :)
Спасибо сказали:
Аватара пользователя
diesel
Бывший модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian

Re: Зомби процессы

Сообщение diesel »

Enforcer писал(а):
22.04.2010 15:52
diesel писал(а):
22.04.2010 15:48
Перезагрузите сервер, и у вас снова их не будет. Ну или терпите :)


Не будет сколько, несколько часов? Пару дней? :)

Как повезет. На самом деле достаточно редкое явление.
Спасибо сказали:
Enforcer
Сообщения: 99
ОС: Debian GNU/Linux

Re: Зомби процессы

Сообщение Enforcer »

diesel писал(а):
22.04.2010 15:56
Enforcer писал(а):
22.04.2010 15:52
diesel писал(а):
22.04.2010 15:48
Перезагрузите сервер, и у вас снова их не будет. Ну или терпите :)


Не будет сколько, несколько часов? Пару дней? :)

Как повезет. На самом деле достаточно редкое явление.


Вот именно - редкое.
Поэтому и паникую.

А может быть причина в железе сервера?
То есть, железо хреновое/кривое/дурное?
Спасибо сказали:
sciko
Сообщения: 1744
Статус: Ъ-участник
ОС: Debian/Ubuntu/etc

Re: Зомби процессы

Сообщение sciko »

Enforcer писал(а):
22.04.2010 16:00
Вот именно - редкое.
Поэтому и паникую.
Не надо паниковать. Надо молиться, поститься и слушать радио Радонеж ^_^


Enforcer писал(а):
22.04.2010 16:00
А может быть причина в железе сервера?
Мало вероятно. Чаще всего -- это кривые программы.
Спасибо сказали:
loginrl103
Сообщения: 11

Re: Зомби процессы

Сообщение loginrl103 »

зомби процессы - бесхозные структуры описатели процесса, памяти жрут мало, единственный вред - болтаются в списке процессов при просмотре всякими top и ps, и (самое главное) занимают pid. я конечно сомневаюсь что у тебя число процессов плодится до 32 тысяч, поэтому можешь не волноваться насчёт зомби.

ps. возникают таки да - из-за кривых программ, когда родитель не дожидается завершения потомка и умирает...)
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4824
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: Зомби процессы

Сообщение SLEDopit »

diesel писал(а):
22.04.2010 15:56
Как повезет. На самом деле достаточно редкое явление.
Такое уж редкое ли.
Я вот когда монтирую по sshfs что-нибудь и соединение рвется, то потом довольно часто процесс (который sshfs user@...) просто невозможно убить (kill -9 от рута не помогает). Вдобавок еще подвисают, если запустить, df и fuser -km /точка/монтирования (как впрочем ls, umount и прочие утилитки).
И у процесса sshfs статус D по ps ax'у.
У меня это прямо таки настоящее бедствие.
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:
Аватара пользователя
diesel
Бывший модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian

Re: Зомби процессы

Сообщение diesel »

SLEDopit писал(а):
23.04.2010 12:00
diesel писал(а):
22.04.2010 15:56
Как повезет. На самом деле достаточно редкое явление.
Такое уж редкое ли.
Я вот когда монтирую по sshfs что-нибудь и соединение рвется, то потом довольно часто процесс (который sshfs user@...) просто невозможно убить (kill -9 от рута не помогает). Вдобавок еще подвисают, если запустить, df и fuser -km /точка/монтирования (как впрочем ls, umount и прочие утилитки).
И у процесса sshfs статус D по ps ax'у.
У меня это прямо таки настоящее бедствие.

D - это не зомби, это другое, это "uninterruptible sleep" - когда процесс висит в ожидании завершения операции ввода-вывода. Вот в этом случае процесс продолжает хавать как минимум память(то есть не просто структура в таблице процессов, а собственно вся память что была процессу отведена). Чтобы не вис df или ls и прочее... для nfs работает lazy umount (ЕМНИП umount -l или umount -l -f), c sshd - не помню чтобы проблемы были при отмонтировании, но я почти не пользовался таким маунтом.
Спасибо сказали:
neol
Сообщения: 600
ОС: Debian Stable

Re: Зомби процессы

Сообщение neol »

Enforcer писал(а):
22.04.2010 15:20
В процессе иногда проскакивает apache2 <defunct>.

Если он висит секунду-другую - это нормальное явление. Чайлд отработал свое и завершился, а родительский процесс в это время занят чем-то другим, в результате такой зомби несколько секунд висит в процессах, пока родитель не доберется до него. Если такие процессы висят долго и их много, тогда можно немножко попаниковать (:
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: Зомби процессы

Сообщение serzh-z »

loginrl103 писал(а):
23.04.2010 09:48
ps. возникают таки да - из-за кривых программ, когда родитель не дожидается завершения потомка и умирает...)
Когда родитель умирает, то зомби усыновляются процессом init.

По правде говоря, удивляюсь, в который десяток раз уже эта тема мусолится тут.
Спасибо сказали:
loginrl103
Сообщения: 11

Re: Зомби процессы

Сообщение loginrl103 »

serzh-z писал(а):
23.04.2010 12:59
loginrl103 писал(а):
23.04.2010 09:48
ps. возникают таки да - из-за кривых программ, когда родитель не дожидается завершения потомка и умирает...)
Когда родитель умирает, то зомби усыновляются процессом init.

По правде говоря, удивляюсь, в который десяток раз уже эта тема мусолится тут.


в теории - инит должен прибирать подбирать осиротевшие структуры, только не на всех ядра такое поведение замечал - на некоторых 2.6.2x зобми можут висеть неделями.
Спасибо сказали:
Аватара пользователя
strah
Сообщения: 283
ОС: Freebsd, linux, Solaris.

Re: Зомби процессы

Сообщение strah »

loginrl103 писал(а):
29.04.2010 16:40
в теории - инит должен прибирать подбирать осиротевшие структуры, только не на всех ядра такое поведение замечал - на некоторых 2.6.2x зобми можут висеть неделями.

У меня в solaris 9 от utaudio, вроде(или от какого-то еще процесса sun ray server), помню, зомби довольно долго висели.
/earth: file system full
Спасибо сказали:
Obscurus
Сообщения: 189

Re: Зомби процессы

Сообщение Obscurus »

А можно ли как-то предотвратить появление таких зомбей программным способом? Например, у нас есть cgi-скрипт, который должен запускать отдельный процесс для обработки чего-либо. Обработка идёт долго, минут по 10-15, то есть ожидать завершения смысла нет - клиент отвалится по таймауту через пару минут. Самое простое решение - fork()+exec(), но в этом случае родительский процесс помрёт заведомо раньше потомка. То есть зомби будут плодиться пачками, можно каким-то образом порождённый процесс оторвать/передать и тд?
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Зомби процессы

Сообщение sash-kan »

Obscurus писал(а):
18.06.2010 18:23
А можно ли как-то предотвратить появление таких зомбей программным способом?
да. просто надо писать нормальные программы.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
anonymous.ru
Сообщения: 614

Re: Зомби процессы

Сообщение anonymous.ru »

Obscurus писал(а):
18.06.2010 18:23
А можно ли как-то предотвратить появление таких зомбей программным способом?

Можно, я разрешаю. Поставьте в родителе игнорирование на сигнал SIGCHLD (до порождения сына)

Obscurus писал(а):
18.06.2010 18:23
но в этом случае родительский процесс помрёт заведомо раньше потомка.

Если родитель умер - его осиротевшие дети не будут становиться зомби :) Я гарантирую это.
:drinks:
Спасибо сказали: