Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > *NIX системы: Общие вопросы > Отчего могут рождаться Zombie процессы?


Автор: Andrey1 2.11.2005, 17:58
Есть программа (даже система; база данных, если быть точно), во всем хорошая; единственный недостаток - рождает пачками zombie процессы. Прога состоит из нескольких частей (клиент-сервер), которые "живут" в backgroud'e. Части похоже обмениваюся данными через общую память...

Отчего могут рождаться Zombie процессы (Zombie в терминалогии top"a)?


Andrey


Автор: bilbobagginz 2.11.2005, 20:01
Zombie - это статус процесса перед смертью.
обычно зомби остаются подолгу из-за того, что процесс родителя был написан через одно место.

если процесс А прождает процесс Б, то при смерти Б, А должен вызвать системный вызов wait().

причина такова:
в линуксе, как и в других юниксах, при изменении статуса процесса ( для понимания этого выражения, ножно знать что есть "процесс", и что это его "статус".)
прежде чем изменить статус, родитель получает сообщение об этом. если это сообщение о смерти сына, то процесс родителя обязан сообщить системе о том, что это нормально, и система может освободить все ресурсы от сына. делается это вызовом wait().

если этого не происходит, процесс остается в промежуточном статусе. ZOMBIE это и есть "предсмертный статус".

что за база данных ?



Автор: dargaard 2.11.2005, 20:05
Обычно сервера работают по следуюшему принципу: есть главный поток который ждет запрос от клиента. При попытке соединения главный поток создает новый и передает контроль ему. При завершении сессии главный поток должен воссоединится с новосозданным, иначе будут кучами рождаться зомби процессы - при завершении сессии новосозданный процесс умирает , но с родительским потоком не воссоединяется - вот и висит как зомби.

Автор: Andrey1 4.11.2005, 11:19
Всем спасибо, с занесением в личное дело smile .
Цитата(bilbobagginz @ 2.11.2005, 20:01)
что за база данных ?

Ой... лучше не буду говорить. Может разработчики уже скоро поубивают этих zombieв, а пост будет висеть еще долго... smile

Автор: likehood 11.7.2006, 13:04
В системе периодически появляются процессы-зомби, причем это могут быть самые различные проги: xfe, evolution или еще что-нибудь. Обычно в памяти висит один, максимум два зомби. Откуда они могут взяться в принципе? 

Автор: bilbobagginz 11.7.2006, 23:39
это уже видими имеем дело с нечистой силой...  

baronp, ВСЕ процессы перед исчезновением из системы находятся в состоянии ZOMBIE. вопрос кого ты успеваешь увидеть в этом малоприятном состоянии,  а кого нет.

 

Автор: powerfox 12.7.2006, 00:26
Цитата(bilbobagginz @  12.7.2006,  00:39 Найти цитируемый пост)
это уже видими имеем дело с нечистой силой...  

Покупаем чеснок, делаем чесночный сок ---> поливаем системник и... Никаких зомби. А есои полить процессор, то зомби НА ЭТОМ процессоре не появятся точно. 

Автор: BobiKK 12.7.2006, 09:28
Новый голивудский блокбастер: "Атака зомби".
Действие картины просходит в заброшенных нейронных сетях мамки Intel Desktop Board 845D. Каждый день на бедных пользователей совершают набеги жестокие зомби из потустороннего мира kernel'a. Отважный герой baronp, вооружившись чесночным экстрактом и плазменым орудием kill, отправляется ликвидировать сам источник  нечисти, процессор. Роли зомби исполянют xfe, evolution 

Автор: likehood 12.7.2006, 10:03
Цитата(bilbobagginz @  12.7.2006,  00:39 Найти цитируемый пост)
 ВСЕ процессы перед исчезновением из системы находятся в состоянии ZOMBIE

Только вот исчезают они вместе с самой системой. Kill здесь не помогает (зомби нельзя убить, потому что его уже нет среди живых!). 

Автор: bilbobagginz 12.7.2006, 14:29
а чего нас убивать ? мы люди не злые  smile  

Автор: powerfox 12.7.2006, 21:25
Не помню чья, но была песня, кажется, мёртвый анархист. Сюжет такой: поднялись зомби, а на них крестьяне с вилами. Когда взошло солнышко, то всех добило. А заканчивалась песенка словами:
Лишь кто-то в тёмном подвале
Гулко сказал Ух. 

Автор: GrayCardinal 13.7.2006, 11:35
"Мертвый анархист" это песня так называется. Исполняет "Король и Шут". И не "Ух" он сказал а "ХОЙ". Под него даже клип сняли.

А kill помогает, только мочить надо не зомби а предков которые их сделали smile. Простое
kill -s SIGHUP <parent_pid>
Должен угробить всех зомби а означенного parent_pid перезапустить. Или просто угробить, а перезапускать придется ручками.
 
 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)