porque o ps aux está preso?

6

Gostaria de saber no meu servidor de teste, sempre que eu executar o ps aux, ele ficará preso. Ele gera uma lista de processos e pára de responder. Eu verifiquei que há RAM suficiente (1GB).

Quando eu executo o comando top, parece ok para mim, mas eu me pergunto se existe um processo zumbi. O que é isso? Alguém pode explicar?

top - 11:00:29 up  3:53,  2 users,  load average: 51.75, 50.52, 45.38
Tasks:  79 total,   1 running,  77 sleeping,   0 stopped,   1 zombie
Cpu(s):  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   1747660k total,   603572k used,  1144088k free,    12644k buffers
Swap:   917496k total,        0k used,   917496k free,    97732k cached

Obrigado

    
por Chamnap 18.08.2010 / 13:46

6 respostas

5

Se no Linux, execute strace em ps para ver quais chamadas de sistema ele chama, e você pode ver em qual delas está pendurado:

$ strace ps aux

Se você estiver em um sistema Unix-y diferente, você usaria truss ou dtruss .

    
por 19.08.2010 / 04:15
3

Considerando que você tem uma carga de mais de 50, mas a CPU está 100% ociosa, eu olharia para i / o. Parece que o computador está aguardando que os discos ou a rede retornem dados antes que possam continuar.

Tente usar o iotop para ver o que está bloqueando isso. Pode ser um caminho de saída.

Comportamento semelhante também é possível de sua máquina ser configurada para fazer resolução de nome / grupo e autenticação em relação a um recurso externo e esse recurso não está disponível. Nesse caso, ajudaria a verificar sua configuração do PAM e quaisquer serviços relevantes, como DNS, LDAP, NIS.

    
por 18.08.2010 / 16:29
1
por 18.08.2010 / 13:54
1

Um ... sua carga média está mostrando que algo está realmente comendo i / o ou CPU. Seu disco rígido está se debatendo? É lento em resposta? Uma média de carga de 51 não é realmente normal.

Zombie - se um processo é gerado a partir de outro processo e termina, ele deve ser colhido pelo processo pai novamente. Se o pai caiu ou desapareceu, o processo órfão se transforma em um zumbi. É essencialmente um processo na tabela de tarefas que não está tomando recursos ou fazendo qualquer coisa, mas agora o processo init tem que cuidar disso. Não há realmente nenhuma maneira de limpá-los sem uma reinicialização, mas eles geralmente não fazem mal a nada. Agora, se você tem um monte de zumbis, você tem um problema; um processo com um bug, um problema de recurso, algo não está sendo executado corretamente. Um ou dois zumbis não fazem um filme de Romero, no entanto.

Esclarecimento - usei o termo órfão, mas o lado pedante indicava que há uma diferença entre um processo órfão e um zumbi. Órfãos ainda estão em execução, enquanto o zumbi não está fazendo nada, ele não está tomando recursos além de uma entrada de tabela de processo. E eu não tenho certeza sobre o init tomar o processo zumbi. Eu posso estar errado nisso (Init deve cuidar de processos órfãos). De qualquer forma, a menos que você tenha muitos zumbis aparecendo, um ou dois em um sistema não é um problema normalmente.

    
por 18.08.2010 / 13:56
1

Uau, da sua saída principal, sua carga é ridiculamente alta. A menos que você tenha um sistema com mais de 50 CPUs, isso é muito alto. Os processadores não estão fazendo nada:

Cpu(s):  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

Parece que você tem um problema de hardware. O que a saída de dmesg diz a você?

    
por 19.08.2010 / 05:54
0

ps aux exibe a lista de processos uma vez e sai. Não atualiza periodicamente como top .

Um processo "zumbi" é um processo que concluiu a execução, mas ainda possui uma entrada na tabela de processos. Esta entrada ainda é necessária para permitir que o processo que iniciou o processo (now zombie) leia seu status de saída.

    
por 18.08.2010 / 13:14

Tags