quarta-feira, 26 de outubro de 2016

Java - Snapshot JVM

O conteúdo do script é muito útil para quem sabe o que fazer com ele e como analisar as saídas. 

Cuidado ao utilizá-lo livremente em função do heapdump que é gerado a cada execução então precisam avaliar espaço em disco e impacto antes disto. 

Ele serve para coletar diversas informações sem que seja necessário algo mais que o JDK instalado no servidor alvo que vão avaliar. 

   Exemplo de saída: 

$ ./snapshot-jvm.sh
PID JVM -> 18854
Date execution -> Wed Oct 26 15:47:27 BRST 2016

Take thread dump...
Take memory snapshot...
Attaching to process ID 18854, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 24.79-b02
Attaching to process ID 18854, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 24.79-b02
finding class loader instances ..done.
computing per loader stat ..done.
please wait.. computing liveness..............liveness analysis may be inaccurate ...
Take memory dump...
Dumping heap to /opt/resources/temp/heapdump-18854-15-2016-10-26.hprof ...
File exists
Snapshot resources in use
Check threads in use...
Finish.

Repositório para download : https://github.com/helkmut/snapshot-jvm


Em resumo, após sua execução poderá avaliar threads ativas nos connectors, thread dump, heap dump e suas estatísticas, assim como estatísticas do uso dos recursos do servidor. Com essa informação conseguimos identificar uma contenção de recursos seguramente. 

Espero ter ajudado de alguma forma, ao menos poupando o trabalho de fazer um script igual.