Em 2017 publicamos um artigo chamado “Performance em ambientes Fusion” no qual mostrávamos diversas ferramentas que podem ajudar a monitorar ambientes Fusion (e java em geral), permitir detectar problemas (como lentidão e travamentos) e ajudar a otimizar o uso tanto do hardware quanto software para garantir um melhor desempenho.
Neste artigo de 2019 abordaremos mais algumas ferramentas que podem ajudar nesta tarefa, permitindo um monitoramento ainda mais avançado.
Zulu Mission Control
O Java Mission Control, conforme abordado no passado, permite conectar à máquina virtual do Java, monitorando threads, consumo de memória e propriedades de bibliotecas (beans) para que seja possível acompanhar a execução do ambiente, abrindo assim sua “caixa preta”. Um ponto importante naquele momento é que o JMC, apesar de ser incluso na máquina virtual Java (JDK), tinha seu licenciamento comercial caso fosse utilizado em ambientes de produção.
Atualmente a Oracle abriu o código do Java Mission Control e temos builds disponíveis no mercado de maneira totalmente livre. Uma delas é o Zulu Mission Control, da Azul Systems, que pode ser baixado e utilizado em versões do Java 8 até o Java 11.
Thread dump
Esta ferramenta pode ser bastante utilizada para uma análise detalhada do que estava sendo executado em determinado momento na máquina virtual. Ela permite tirar uma foto de todas as rotinas (threads) em execução para posterior análise.
Trata-se de algo muito útil quando a máquina virtual para de responder, assim é possível reiniciá-la para normalizar o sistema bem como para obtenção de dados para uma análise posterior. Um utilitário para gerar este thread dump é o jstack que acompanha a máquina virtual. A sintaxe é:
“jstack 3832 > arquivo.txt”
Onde 3832 seria o process ID (PID) da máquina virtual, e o arquivo.txt seria o arquivo onde será gravado o resultado.
Com esta ferramenta é possível analisar o stacktrace de cada thread que estava em execução.
Importante: para seu uso é interessante um conhecimento mais avançado da linguagem Java, já que serão exibidos os caminhos de código executados pela aplicação.
A próxima ferramenta a ser apresentada permite uma análise ainda mais avançada destes resultados.
Thread Dump Analyzer
Para permitir uma análise mais visual do thread dump obtido anteriormente existem diversas ferramentas online que analisam o arquivo de dump, organizando as informações e sugerindo análises.
Estas ferramentas permitem, por exemplo: enumerar quantas threads estavam executando exatamente a mesma rotina, ou threads que aparentemente estavam em loop.
Um exemplo de ferramenta pode ser encontrado aqui. Nela você faz o upload do arquivo de dump e já são apresentados os resultados como abaixo:
(sumário)
Threads com mesmo stack trace
Conclusão
Neste artigo abordamos mais uma série de recursos e ferramentas que podem auxiliar na solução de problemas de desempenho e na gestão proativa do ambiente. Em complemento a este, recomendamos a leitura do nosso outro post.
Novamente, estes recursos são pertinentes a ambientes Fusion Platform, mas podem ser utilizados em qualquer plataforma Java. Teste nossa ferramenta gratuitamente por 15 dias.
Ressaltamos ainda que estas ferramentas auxiliam na análise e em um melhor controle do seu ambiente, mas sempre que precisar, nossa equipe de consultoria e atendimento pode também ajudar nestas tarefas.