+ Responder ao Tópico



  1. #1

    Padrão Processos Zumbis

    Senhores, tem um servidor que eu num sei o que fazer mais.
    O processo zumbi está aí.
    O mesmo não morre.
    O que eu preciso fazer para solucionar o problema ?


    \_ svscan /service
    745 ? S 0:00 | \_ supervise tinydns
    749 ? S 0:00 | | \_ /usr/local/bin/tinydns
    746 ? S 0:00 | \_ supervise log
    750 ? S 0:00 | | \_ multilog t ./main
    747 ? S 0:00 | \_ supervise dnscache
    12012 ? Z 0:00 | | \_ [softlimit <defunct>]
    748 ? S 0:00 | \_ supervise log
    751 ? S 0:00 | \_ multilog t ./main


    # type softlimit
    softlimit is /usr/local/bin/softlimit

    # top

    PID USER PRI NI SIZE RSS SHARE STAT %CPU %MEM TIME COMMAND
    12179 root 15 0 1032 1032 836 R 0.3 0.2 0:00 top
    12185 root 14 0 0 0 0 Z 0.1 0.0 0:00 softlimit <defunct>

  2. #2

    Padrão

    Essa maquina é servidora de DNS. ou algo do genero.
    Reincie esse serviço. e boa.

  3. #3

    Padrão

    Amigo,

    Identifica o PID do processo com o comando:

    # ps -aux | less

    ou

    # ps -aux | more

    E mata o processo com o seguinte comando:

    # kill -9 PID

  4. #4
    mcm
    Visitante

    Padrão

    Processos zumbis são bem complicados...

    É praticamente impossível acabar com eles usando kill (qualquer flag). Todas as vezes que vi um processo zumbi (seja no Linux, seja no Solaris...), nenhum kill acabou com ele.

    Um processo vira zumbi quando o processo que o iniciou (processo pai) tem sua execução encerrada repentinamente, e ele nem teve tempo de avisar ao seu processo filho de sua saída. As vezes, esse processo "órfão", vira um processo zumbi.

    Cara, se nem o restart do serviço resolver, é necessário reboot.

    []!

  5. #5

    Padrão

    Citação Postado originalmente por mcm Ver Post
    Processos zumbis são bem complicados...

    É praticamente impossível acabar com eles usando kill (qualquer flag). Todas as vezes que vi um processo zumbi (seja no Linux, seja no Solaris...), nenhum kill acabou com ele.

    Um processo vira zumbi quando o processo que o iniciou (processo pai) tem sua execução encerrada repentinamente, e ele nem teve tempo de avisar ao seu processo filho de sua saída. As vezes, esse processo "órfão", vira um processo zumbi.

    Cara, se nem o restart do serviço resolver, é necessário reboot.

    []!

    Faço as suas as minhas palavras, infelizmente esse processo Zumbis são complicado mesmo, se o restart do serviço não resolver. dae só reboot, e se o processo continuar ele vai acabar consumindo processamento do seu servidor, dae já viu, overload, pode ocorrer, kra, mas pelo que vi vc usa o tinydns. tenta rebootar ele, e veja no que dá acho que o Kill não vai te resolver muita coisa, pois o processo está alocado no kernel, então tu tem que encerrar o processo pai.
    Me corrijam se não tiver falando besteira.

  6. #6
    Administrador Avatar de Fernando
    Ingresso
    Jul 2001
    Localização
    Campinas Area
    Posts
    4.996
    Posts de Blog
    4

    Padrão

    Na verdade os zombie processes não consumem -NADA- além de uma linha na tabela de processamento do kernel. Eles são processos mortos, portanto não consumem nem nunca vão chegar a consumir recurso da maquina.

    O que acontece é basicamente o que nossos amigos já falaram, talves por algum problema de código no processo principal ou falha inesperada do mesmo. Os processos "filho" dão o exit quando o processo principal avisa o sistema através de um system call -wait()- que ele não precisa do processo filho. Quando as chamadas de sistema não chegam ao processo ele vira um processo zumbi.

    Na verdade ele nunca vai te gerar problema, a não ser o infortúnio de aparecer no ps. Existe uma possibilidade, que seria a tabela de processando do kernel se encher e portanto nenhum outro processo poderia ser executado, mas eu diria que isso é meio impossível.

    Finalizando, se o processo principal for reiniciado ele provavelmente vai disparar chamadas de sistema para identificar os processos filhos e eles vão sair da tabela do sistema. Se o processo principal é finalizado, o sistema dá o PID dos processos filhos pro INIT cuidar, ele por sua vez manda os chamados de sistema -wait()- e termina processo por processo (dos zumbis).

    Existe sim a possibilidade deles ainda ficarem presos, o que é improvavel, de qualquer forma se você ainda quiser matar ele, você vai precisar de um signal handler para dar um loop com chamadas de exit no processo zumbi em questão até ele responder e ser terminado.

    Sinceramente na minha opinião é muito trabalho a troco de nada, e provavelmente o start/stop do processo principal já resolve.

    É isso ai.

  7. #7

    Padrão

    Amigo,

    Por favor, informe quais serviços esse servidor roda.

  8. #8

    Padrão

    TomCat

    Na verdade eu nem cuido desse servidor, o pessoal da empresa responsável pela aplicação que roda aqui na empresa com o Tomcat.

    Outro dia mi pediram para olhar do porque de estar dando erros e tal e eu vi que o processo zumbi estava.
    Eu perguntei a ele sobre o TinyDns e eles falaram que não estçao utilizando.
    Num sei bem o que fazer com isso agora.

  9. #9

    Padrão

    Alem do Tomcat quais função vc tem nesse servidor

  10. #10

  11. #11

    Padrão

    Amigo,

    Então como somente roda aplicações escritas em java, se forem serviços que possam ser parados por alguns minutos.

    Tente:

    # init 1

    Observação: muda para o modo monousuário encerrando todos os daemons e serviços.

    Autentique-se novamente e:

    # init 3

    Observação: retorna para o modo multiusuário iniciando todos os daemons e serviços configurados.

  12. #12

    Padrão

    Vou fazer um teste.
    Vou falar com a empresa que é responsavel pelo servidor e vou ver isso.
    Obrigado

  13. #13
    Administrador Avatar de Fernando
    Ingresso
    Jul 2001
    Localização
    Campinas Area
    Posts
    4.996
    Posts de Blog
    4

    Padrão

    Cara sinceramente passar um servidor de produção pra single user por causa de processo zumbí é perda de tempo, eles não fazem nada na sua máquina...

    Agora, se o servidor pode ser parado sem problemas, um simples reboot mata o problema

  14. #14

    Padrão

    O problema Psy é que eu reiniciei a máquina e não adiantou.
    Permanece o Zumbi.

  15. #15

    Padrão

    Psy,

    Eu entendi seu ponto de vista, mas, em minha opnião, achei necessário o init depois um kill -9 sem sucesso. Pois, usamos um sistema operacional estável (linux) e se tivermos que reiniciar para tudo quanto for falha, é melhor usarmos o Windows da Microsoft.

    Como estamos no fórum, o objetivo aqui é tentarmos achar a solução mais viável. Neste caso, a última e menos desejada é o reboot do servidor.

    Afinal de contas, o máximo da administração de servidores linux é a alta segurança e a alta disponibilidade.

    Se estiver enganado, me corriga por favor.

  16. #16
    Administrador Avatar de Fernando
    Ingresso
    Jul 2001
    Localização
    Campinas Area
    Posts
    4.996
    Posts de Blog
    4

    Padrão

    Na minha opinião a solução mais viável é não mexer nos processos uma vez que eles não mexem com a máquina, alterar o init ou qualquer condição (reboot, etc) de serviço de um servidor de produção implica em uma impossibilidade numa realidade corporativa.

    Quanto à alta disponibilidade e segurança o Linux é sim um bom recurso, mas ainda está longe de ser o melhor.