O processo zumbi não afeta o desempenho ou a lentidão, pois os processos zumbis não consomem nenhum recurso do sistema.
Nota: - Praticamente, ele ainda está usando o PID (que é um recurso limitado), e as estruturas de dados do kernel para o processo ainda estão alocadas. Normalmente, isso não importa muito, mas o uso da memória do kernel pode ser significativo em sistemas com memória muito limitada.
Problema causado pelo processo zumbi
Cada processo zumbi mantém seu ID do processo. Os sistemas Linux têm um número finito de IDs de processo - 32767 por padrão em sistemas de 32 bits. Se os zumbis estiverem acumulando a uma taxa muito rápida, todo o conjunto de PIDs disponíveis acabará sendo atribuído aos processos zombie, impedindo o lançamento de outros processos.
Nota : Em sistemas de 64 bits, você pode aumentar o PID máximo, consulte /unix//a/16884/170373
No entanto, alguns processos zumbis por aí não são problema - embora indiquem um erro no processo pai no sistema.
Explicação:
Quando um processo morre no Linux, ele não é todo removido da memória imediatamente - seu descritor de processo permanece na memória.
O status do processo se torna EXIT_ZOMBIEe o pai do processo é notificado de que seu processo filho morreu com o SIGCHLDsinal.
O processo pai deve então executar a chamada do sistema wait () para ler o status de saída do processo morto e outras informações. Isso permite que o processo pai obtenha informações do processo morto. Depois que wait () é chamado, o processo zumbi é completamente removido da memória.
Isso normalmente acontece muito rapidamente, então você não verá processos zumbis se acumulando no seu sistema. No entanto, se um processo pai não for programado corretamente e nunca chamar wait (), seus filhos zumbis permanecerão na memória até serem limpos.
Resolução:
Você não pode matar processos zumbis, como você pode matar processos normais com o sinal SIGKILL - processos zumbis já estão mortos.
Uma maneira de matar zumbis é enviando o sinal SIGCHLD para o processo pai. Esse sinal informa ao processo pai para executar a chamada do sistema wait () e limpar seus filhos zumbis. Envie o sinal com o comando kill, substituindo pid no comando abaixo pelo PID do processo pai:
kill -s SIGCHLD pid
Quando o processo que criou os zumbis termina, o init herda os processos do zumbi e se torna seu novo pai. (init é o primeiro processo iniciado no Linux na inicialização e recebe o PID 1.)
Nota: - A partir do Linux 3.4, os processos podem emitir a chamada do sistema prctl () com a opção PR_SET_CHILD_SUBREAPER e, como resultado, eles, não o processo nº 1, se tornarão os pais de seus processos descendentes órfãos. Consulte: /unix//a/177361/5132
O INIT executa a chamada do sistema wait () para limpar seus filhos zumbis, de modo que o init fará pouco trabalho com os zumbis. Você pode reiniciar o processo pai após fechá-lo.