Geração de dumps (thread e memory) no WebSphere 6.x

Segue uma dica de como extrair um dump de threads e memória do WebSphere, funciona tanto em unix como em windows.

Acessar a interface administrativa e configurar os parametros

Navegação

Servers -> Application Servers -> Server1 -> Process Definition -> Java Virtual Machine -> Generic JVM arguments

Parâmetro:

-Xdump:system+heap+java:events=gpf+throw+user,filter=java/lang/OutOfMemoryError,request=exclusive+prepwalk

Navegação:

Servers -> Application Servers -> Server1 -> Process Definition > Environment Entries

Parâmetros:

IBM_HEAPDUMP=true
IBM_HEAPDUMP_OUTOFMEMORY=true
IBM_HEAPDUMPDIR=c:\temp

Agora criar um atalho para facilitar o acesso ao script wsadmin, no diretório WAS_HOME/bin.

Windows

* _wsadmin_comm.bat
wsadmin -conntype SOAP -user admin -password senha_do_admin %*

</p>

Unix

* _wsadmin_comm.sh
wsadmin -conntype SOAP -user admin -password senha_do_admin $*

Crie scripts JACL (script baseado em TCL) para invocação dos comandos.

Memory Dump

* heapdump.jacl
set jvm [$AdminControl queryNames type=JVM,*]
$AdminControl invoke $jvm generateHeapDump

Thread dump

* threaddump.jacl
set jvm [$AdminControl queryNames type=JVM,*]
$AdminControl invoke $jvm dumpThreads

Para gerar os dumps basta invocar os comandos

_wsadmin_comm.sh -f heapdump.jacl

Veja no diretório especificado em IBM_HEAPDUMPDIR ou no AppServer01 se os arquivos foram gerados em um deles.

Depois use ferramental adequado para analisar os dumps (Eclipse Memory Analyzer, IBM Thread Dump Analyzer).

Written on October 19, 2009