você está aqui: Home  → Arquivo de Mensagens

AIX - Identificando processos zumbis

Colaboração: André Luiz Facina

Data de Publicação: 13 de julho de 2010

Quando um processo se torna zumbi, muitas vezes o nome do processo não aparece com o comando ps, e no lugar fica com o nome defunct.

Nessas horas o AIX Kernel Debugger (comando kdb) é muito útil, pois através dele identificamos qual aplicativo/processos se tornou zumbi.

Uma observação importante é que, o kdb mostra informações que estão em memória RAM, dessa forma processos que estão em swap o kdb não consegue identificar.

Abaixo um procedimento básico do kdb:

Executar o comando kdb como root

  # kdb

Irá aparecer o prompt do kdb (0)>

Listar todos os processos defuntos/zumbis.

  (0)> p * |grep -i zombie

Mostrar apenas um processo defunto utilizando o grep e o PID do processo em hexadecimal.

  (0)> p * | grep <hex pid>

Mostrar informações sobre o processo.

  (0)> p <process slot>

Listar todas as threads do processo. Cada thread tem um slot number e um nome.

  (0)> tpid <hex pid>

Mostrar as informações sobre uma única thread usando o thread slot number.

  (0)> th <thread slot>

Mostrar as informções do processo, isso inclui as informações do espaço do usuário, onde inclui o nome do processo (exec file)

  (0)> u <thread slot> | grep "exec file"

Exemplo prático:

  aix@andre$ ps -ef |grep -i def
    root  721136  282742   0                  0:00 <defunct>
  
  # kdb
  (0)> p * |grep -i zombie
  pvproc+02C000  176 <zombie> ZOMB   00B00F0 0045076 00007FFFFFFFF080   0 0001
  (0)>
  
  (0)> p 176
              SLOT NAME     STATE      PID    PPID          ADSPACE  CL #THS
  
  pvproc+02C000  176 <zombie> ZOMB   00B00F0 0045076 00007FFFFFFFF080   0 0001
  
  NAME....... <zombie>
  STATE...... stat  :05  .... xstat :FF00
  FLAGS...... flag  :00210001 LOAD EXIT EXECED
  [....]
  
  (0)> tpid 00B00F0
                SLOT NAME     STATE    TID PRI   RQ CPUID  CL  WCHAN
  
  pvthread+022200  546 <zombie> ZOMB  2220E7 03C    0         0
  pvthread+033600  812 <zombie> ZOMB  3360ED 03C    2         0
  pvthread+02D800  528 <zombie> ZOMB  2D8027 03C    0         0
  pvthread+033500  822 <zombie> ZOMB  335089 03C    0         0
  
  (0)> th 546
                SLOT NAME     STATE    TID PRI   RQ CPUID  CL  WCHAN
  
  pvthread+022200  546 <zombie> ZOMB  2220E7 03C    0         0
  
  NAME................ <zombie>
  WTYPE............... WZOMB
  .................tid :00000000002220E7  ......tsleep :FFFFFFFFFFFFFFFF
  ...............flags :00000000  ..............flags2 :00000000
  ...........pmcontext :00000000
  DATA.........pvprocp :F100070F0002C000 <pvproc+02C000>
  LINKS.....prevthread :F100070F10022200 <pvthread+022200>
  ..........nextthread :F100070F10022200 <pvthread+022200>
  DISPATCH.......synch :FFFFFFFFFFFFFFFF
  SCHEDULER...affinity :00000000  .................pri :0000003C
  .............boosted :00000000  ...............wchan :0000000000000000
  ...............state :00000006  ...............wtype :0000000C
  MISC       ..tv_eyec :7076746850524F43 (pvthPROC)
  CHECKPOINT......vtid :00000000  .............chkfile :0000000000000000
  LOCK........ lock_d @ F100070F10022230 0000000000000000
  PROCFS......procfsvn :0000000000000000
  NUMA............rset :0000000000000000
  PROFILING.....prbase :0000000000000000  ....prpinned :0000000000000000
  [....]
  
  (0)> u 546 |grep "exec file"
  Current exec file information:
   exec file..oracle
  (0)>

No nosso exemplo o processo defunto é o oracle. Identificando qual aplicativo está se tornando <defunct> agiliza o processo de troubleshooting.

André Facina atualmente trabalha na IBM como especialista em Unix e Storage.


Veja a relação completa dos artigos de André Luiz Facina

 

 

Opinião dos Leitores

Seja o primeiro a comentar este artigo
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script