O Arthas é uma ferramenta poderosa para solucionar problemas de produção em aplicações Java. Ele usa tecnologia de aprimoramento de bytecode para inspecionar o estado em tempo de execução de uma aplicação sem reiniciar o processo da JVM.
O Application Real-Time Monitoring Service (ARMS) integra totalmente todos os recursos do Arthas e oferece as seguintes vantagens em relação a uma instalação autogerenciada:
Sem dependência do JDK. Ative ou desative o diagnóstico do Arthas sob demanda para várias aplicações com um único clique, e não baixe nem instale o Arthas.
Uma interface web para recursos comuns elimina a necessidade de memorizar comandos, pesquisar comandos ou escrever expressões.
Integração com o contexto do ARMS. Use o comando
tracee visualize o ID de rastreamento do ARMS.
Pré-requisitos
Apenas o Application Monitoring Pro Edition oferece suporte ao recurso de diagnóstico do Arthas.
O agente do ARMS deve estar na versão v2.7.1.3 ou posterior.
O Application Monitoring está ativado para sua aplicação. Para mais informações, consulte Application Monitoring overview.
A aplicação é desenvolvida em Java.
Contexto
O recurso de diagnóstico do Arthas fornecido pelo ARMS é usado principalmente para complementar as capacidades de diagnóstico em tempo real do ARMS. O recurso de diagnóstico do Arthas do ARMS inclui os seguintes tipos:
Visão geral da JVM: Visualize o uso de memória em tempo real, as informações do sistema, as variáveis do sistema e as variáveis de ambiente do processo atual da JVM.
Análise de consumo de tempo de threads: Visualize os tempos de execução das threads e a pilha de métodos em tempo real para qualquer thread no processo atual da JVM.
Análise de execução de métodos: Capture um registro de execução para qualquer método que não seja do JDK e que atenda a condições especificadas. Esse registro inclui parâmetros, exceções, valores retornados e o tempo de execução de métodos internos.
Visualizador de objetos: Visualize os valores das propriedades em tempo real de qualquer instância de classe.
Painel em tempo real: Visualize dados em tempo real para componentes comuns. Por exemplo, visualize a configuração, o uso e o tempo de execução de SQL de um pool de conexões Druid.
Arthas Shell: Use uma interface de linha de comando para executar o diagnóstico do Arthas.
O recurso de análise de desempenho do Arthas foi totalmente atualizado para o recurso de continuous profiling, que é mais poderoso, mais fácil de usar e pode ser ativado permanentemente.
O continuous profiling ajuda a identificar gargalos de desempenho causados por CPU, memória e I/O em aplicações Java. Ele fornece estatísticas detalhadas por nome de método, nome de classe e número de linha para ajudar a otimizar sua aplicação, reduzir a latência, aumentar o throughput e economizar custos. Para mais informações, consulte Enable continuous profiling.
Ativar o diagnóstico do Arthas
No painel de navegação à esquerda, clique em e, em seguida, clique na aba .
Na aba , na seção , ative o Arthas Switch. Opcionalmente, especifique os endereços IP das instâncias da aplicação para as quais deseja ativar o diagnóstico do Arthas.
No canto inferior esquerdo da aba , clique em .
Visualizar diagnósticos do Arthas
No painel de navegação à esquerda, escolha .
-
Na lista suspensa na parte superior da página de diagnóstico do Arthas, selecione a instância da aplicação que deseja diagnosticar.
Se a versão do agente da instância for anterior a 2.7.1.3, o sistema solicitará a atualização do agente.
Se a versão do agente da instância for 2.7.1.3 ou posterior, a página exibirá as informações de diagnóstico da instância.
Visão geral da JVM
O recurso de visão geral da JVM permite que você visualize informações relacionadas à JVM da sua aplicação, incluindo memória da JVM, informações do sistema operacional e informações de variáveis.
Por padrão, a página de diagnóstico do Arthas exibe a aba . Na aba , você pode visualizar as seguintes informações:
: informações sobre a memória da JVM, incluindo uso de memória heap, uso de memória não heap e status da coleta de lixo (GC).
: informações sobre o sistema operacional, incluindo a carga média do sistema, nome e versão do sistema operacional e versão do Java.
: informações sobre variáveis, incluindo propriedades do sistema e variáveis de ambiente.
Análise de consumo de tempo de threads
Este recurso exibe todas as threads na sua aplicação e seus stack traces para ajudar a identificar rapidamente as threads com maior consumo de tempo.
-
Na página de diagnóstico do Arthas, clique na aba .
A aba exibe o consumo de tempo das threads em tempo real para o processo atual da JVM e agrupa threads semelhantes. A página exibe um resumo da contagem de threads por estado na parte superior.
Clique no ícone + ao lado de um grupo de threads para expandi-lo e visualize os detalhes de threads individuais, incluindo ID da thread, uso de CPU e estado.
-
Para visualizar o stack trace de uma thread específica, clique em na coluna dessa thread.
A caixa de diálogo Thread Details é exibida, mostrando o nome da thread, o estado de execução e o stack trace completo.
Análise de execução de métodos
Este recurso captura o tempo de execução, parâmetros de entrada, valores retornados e outras informações para uma única execução de um método. Você também pode detalhar suas chamadas internas. Isso ajuda a encontrar rapidamente a causa raiz de chamadas lentas, especialmente para problemas impossíveis de reproduzir offline ou com logs ausentes.
Na página de diagnóstico do Arthas, clique na aba .
Na aba , insira uma palavra-chave para o nome da classe na caixa de pesquisa e clique no ícone de Pesquisa
.-
Nos resultados da pesquisa, selecione a classe que deseja diagnosticar. Em seguida, na caixa de seleção de método à direita, selecione um método dessa classe e clique em .
A página exibe um registro de execução capturado aleatoriamente para o método selecionado no ARMS ou .
-
A seção Execution Stack à esquerda mostra os registros de chamadas internas do método diagnosticado.
Para detalhar um método interno, clique em na coluna .
-
Visualize o source clicando em View Source Code na parte superior da seção Execution Stack.
A página exibe o tempo de execução de cada método interno como um comentário no source.
A seção Method Execution Result à direita mostra os valores dos parâmetros, valor retornado, exceção, variáveis de membro e o ID de rastreamento para esta execução.
-
Na seção Set Execution Conditions à direita, para capturar um registro de execução de método específico, defina as condições da seguinte forma:
Selecione um método sobrecarregado do método atual.
-
Na lista suspensa Please select an initial filter key, selecione um tipo de chave e clique no ícone
.Tipos de chave de filtro inicial:
params[n]: O n-ésimo parâmetro do método.
returnObj: O valor retornado do método.
Method execution time: A duração da execução do método.
Throw exception: Indica se o método lança uma exceção durante a execução.
NotaSe a chave de filtro inicial selecionada for um tipo aninhado, continue selecionando seus campos internos até chegar a um tipo básico.
Selecione uma condição de filtro.
Insira um valor de filtro.
-
Clique em .
A condição de filtro adicionada aparece na seção .
No canto superior direito da seção Execution Stack, clique no ícone de Atualização
para capturar uma nova execução de método com base nas condições definidas.
-
Visualizador de objetos
Use o visualizador de objetos para inspecionar o estado atual de objetos singleton. Isso é útil para solucionar problemas relacionados ao estado da aplicação, como configurações, listas de bloqueios ou listas de permissões e variáveis de membro.
Na página de diagnóstico do Arthas, clique na aba .
Na aba , insira uma palavra-chave para o nome da classe na caixa de pesquisa e clique no ícone .
-
Nos resultados da pesquisa, selecione a classe que deseja diagnosticar. Em seguida, na caixa de seleção de instância à direita, selecione uma instância dessa classe e clique em .
A página exibe então os valores em tempo real dos campos dessa instância.
Para campos de tipo simples, a página exibe o valor diretamente na coluna da seção .
-
Para campos de tipo complexo, clique em na coluna da seção . A página exibe os detalhes do campo na seção à direita.
A seção permite desserializar e exibir apenas um nível de um campo complexo. Visualize dados mais específicos, visualize dados mais detalhados do campo.
Painel em tempo real
Use o painel em tempo real e visualize o status em tempo real de componentes-chave no seu sistema, como pools de conexão de banco de dados e pools de conexão HTTP. Isso ajuda a solucionar problemas relacionados a recursos.
Na página de diagnóstico do Arthas, clique na aba .
-
Na lista suspensa na aba , selecione um painel. Em seguida, na caixa de seleção de instância à direita, selecione uma instância para esse painel e clique em .
A página exibe o status em tempo real para esse painel. Por exemplo, para um pool de conexões Druid, o painel mostra informações de status em tempo real, incluindo configuração básica, status do pool de conexões e distribuição do tempo de execução.
Arthas Shell
O recurso Arthas Shell está disponível atualmente apenas nas regiões China (Beijing), China (Shanghai), China (Hangzhou), China (Shenzhen) e China (Zhangjiakou).
Para mais detalhes, consulte a documentação oficial de código aberto.
Após abrir a página do Arthas Shell, selecione uma Line na parte superior e clique em Connect. Quando a conexão for bem-sucedida, uma janela de terminal é exibida. Insira comandos do Arthas no prompt de comando para executar operações de diagnóstico.