Muitos processos de zumbis PHP

2

Eu reiniciei meu daemon do apache hoje para recarregar o arquivo de configuração, mas depois disso eu comecei a ver muitos processos de zumbis do php no sistema. A quantidade varia de 10 a 30 e todos tomam uma pequena fatia de CPU enquanto morrem. Onde devo começar a depurar este problema?

A modificação que fiz foi reduzir o Max Requests Per Child de 0 (vazamentos massivos de memória) para 1000. Eu acho que os processos php são de um script que recebe dados de dispositivos "burros", ie. eles enviam uma solicitação com parâmetros GET e não se importam com o resultado.

Alguns dados:

uname -a

# uname -a
Linux <hostname> 2.6.32-71.29.1.el6.x86_64 #1 SMP Mon Jun 27 19:49:27 BST 2011 x86_64 x86_64 x86_64 GNU/Linux

ps -aux | grep php

# ps aux | grep php
user1     5709  1.0  0.0      0     0 ?        Z    12:15   0:00 [php] <defunct>
user1     5717  1.0  0.0      0     0 ?        Z    12:15   0:00 [php] <defunct>
user1     5721  1.0  0.0      0     0 ?        Z    12:15   0:00 [php] <defunct>
user1     5722  2.0  0.0      0     0 ?        Z    12:15   0:00 [php] <defunct>
user1     5723  2.0  0.0      0     0 ?        Z    12:15   0:00 [php] <defunct>
user1     5724  2.0  0.0      0     0 ?        Z    12:15   0:00 [php] <defunct>
user1     5725  2.0  0.0      0     0 ?        Z    12:15   0:00 [php] <defunct>
user1     5729  2.0  0.0      0     0 ?        Z    12:15   0:00 [php] <defunct>
user1     5731  2.0  0.0      0     0 ?        Z    12:15   0:00 [php] <defunct>
user1     5737  2.0  0.0      0     0 ?        Z    12:15   0:00 [php] <defunct>
user1     5760  2.0  0.0      0     0 ?        Z    12:15   0:00 [php] <defunct>
user1     5778  1.0  0.0      0     0 ?        Z    12:15   0:00 [php] <defunct>
user1     5793  2.0  0.0      0     0 ?        Z    12:15   0:00 [php] <defunct>
user1     5798  1.0  0.0      0     0 ?        Z    12:15   0:00 [php] <defunct>
user1     5800  1.0  0.0      0     0 ?        Z    12:15   0:00 [php] <defunct>
user1     5833  2.0  0.0      0     0 ?        Z    12:15   0:00 [php] <defunct>
user1     5850  2.0  0.0      0     0 ?        Z    12:15   0:00 [php] <defunct>
user1     5870  3.0  0.0      0     0 ?        Z    12:15   0:00 [php] <defunct>
user1     5875  2.0  0.0      0     0 ?        Z    12:15   0:00 [php] <defunct>
user1     5876  2.0  0.0      0     0 ?        Z    12:15   0:00 [php] <defunct>
user1     5877  2.0  0.0      0     0 ?        Z    12:15   0:00 [php] <defunct>
user1     5886  0.0  0.0      0     0 ?        Z    12:15   0:00 [php] <defunct>
user1     5926  0.0  0.0      0     0 ?        Z    12:15   0:00 [php] <defunct>
user1     5939  0.0  0.0      0     0 ?        Z    12:15   0:00 [php] <defunct>
user1     5941  0.0  0.0      0     0 ?        Z    12:15   0:00 [php] <defunct>
user1     5961  0.0  0.0      0     0 ?        Z    12:15   0:00 [php] <defunct>
user1     5962  0.0  0.0      0     0 ?        Z    12:15   0:00 [php] <defunct>
user1     5973  0.0  0.0      0     0 ?        Z    12:15   0:00 [php] <defunct>
user1     5977  0.0  0.2 106836  8680 ?        R    12:15   0:00 /usr/bin/php /home/user1/public_html/<script>.php
root      5981  0.0  0.0 103228   836 pts/0    S+   12:15   0:00 grep php

grátis

# free -m
             total       used       free     shared    buffers     cached
Mem:          3831       3173        658          0        183       2502
-/+ buffers/cache:        487       3344
Swap:         4031          7       4024

tempo de atividade

# uptime
 12:18:10 up 105 days, 23:21,  1 user,  load average: 0.23, 0.20, 0.18

Mais alguma coisa necessária para me ajudar a depurar isso?

    
por onik 27.04.2012 / 11:21

2 respostas

3

Não é um problema. Os zumbis não ocupam CPU, memória ou qualquer outra coisa além de slots de tabela de processo. Os zumbis não ficam por aí por muito tempo, você disse, então tudo o que está acontecendo é que o processo mestre do Apache está fazendo outras coisas além de esperar que os processos filhos sejam encerrados, por isso às vezes demora um pouco antes do término as crianças são ceifadas.

    
por 27.04.2012 / 11:33
0

Um processo de zumbi é apenas um processo que o pai já morreu / foi morto e ainda não foi arrumado.

Se isso acontecer durante o reinício de um serviço, é perfeitamente normal. Você deve ler os estados do processo do linux, informações básicas aqui:

  1. Running: This is a state where a process is either in running or ready to run.
  2. Interruptible: This state is a blocked state of a process which awaits for an event or a signal from another process
  3. Uninterruptible: It is also a blocked state. The process is forced to halt for certain condition that a hardware status is waited and a signal could not be handled.
  4. Stopped: Once the process is completed, this state occurs. This process can be restarted
  5. Zombie: In this state, the process will be terminated and the information will still be available in the process table.

Se isso acontecer durante o uso regular do seu servidor web (estamos falando de processos php afinal), você pode consertar isso temporariamente com um cronjob a cada minuto fazendo um reinício gracioso do apache ( service apache2 reload ), mas isso não resolve o problema subjacente corroendo seus slots disponíveis.

No segundo caso, você precisa discernir qual hospedagem está causando os zumbis e o aplicativo deve ser corrigido. 99% desses zumbis são causados por sites mal programados.

    
por 24.02.2017 / 11:43