O Arthas é uma ferramenta poderosa para solucionar problemas de produção em aplicações Java. Ela utiliza tecnologia de aprimoramento de bytecode para inspecionar o estado de execução da 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 em, sem precisar baixe ou instale o Arthas.
Uma interface web para recursos comuns elimina a necessidade de memorizar comandos, pesquisar sintaxes ou escrever expressões.
Integração com o contexto do ARMS. Use o comando
tracepara visualize o id de rastro do ARMS.
Pré-requisitos
Apenas a Edição Pro do Application Monitoring suporta o recurso de diagnóstico do Arthas.
Recomendamos ative o recurso de diagnóstico do Arthas apenas para solução de problemas e desativá-lo durante o uso rotineiro.
O agente do ARMS deve ser v2.7.1.3 ou posterior.
O Application Monitoring está ativado para sua aplicação. Para mais informações, consulte Visão geral do Application Monitoring.
A aplicação foi desenvolvida em Java.
Contexto
O recurso de diagnóstico do Arthas fornecido pelo ARMS serve 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, informações do sistema, variáveis do sistema e variáveis de ambiente do processo atual da JVM.
Análise de tempo de thread: Consulte 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étodo: Capture um registro de execução para qualquer método não pertencente ao JDK 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: Inspecione os valores das propriedades em tempo real de qualquer instância de classe.
Painel em tempo real: Monitore dados em tempo real de 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: Utilize uma interface de linha de comando para diagnosticar com o Arthas.
O recurso de análise de desempenho do Arthas foi totalmente atualizado para o recurso de profiling contínuo, mais poderoso, fácil de usar e sempre ativo.
O profiling contínuo ajuda a identificar gargalos de desempenho causados por cpu, memória e I/O em aplicações Java. Ele fornece estatísticas detalhadas divididas por nome do método, nome da classe e número da linha para ajudar você a otimizar sua aplicação, reduzir a latência, aumentar o throughput e economizar custos. Para mais informações, consulte Ativar profiling contínuo.
Ative diagnóstico do Arthas
Faça login no console do ARMS. No painel de navegação à esquerda, escolha .
No painel de navegação à esquerda, clique em Application Settings e, em seguida, clique em na aba Custom Configurations.
Na aba Custom Configurations, na seção Arthas Monitoring, ative a opção Arthas Switch. Opcionalmente, especifique os endereços IP das instâncias da aplicação para as quais deseja ative o diagnóstico do Arthas.
No canto inferior esquerdo da aba Custom Configurations, clique em Save.
Visualize diagnóstico do Arthas
Faça login no console do ARMS. No painel de navegação à esquerda, escolha .
Faça login no console do EDAS.
No painel de navegação à esquerda da página de detalhes da aplicação, escolha .
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.
Caso a versão do agente da instância seja 2.7.1.3 ou posterior, as informações de diagnóstico da instância serão exibidas.
Visão geral da JVM
O recurso de visão geral da JVM permite visualize informações relacionadas à JVM da sua aplicação, incluindo memória da JVM, informações do sistema operacional e informações sobre variáveis.
Por padrão, a página de diagnóstico do Arthas exibe a aba JVM Overview. Na aba JVM Overview, é possível visualize as seguintes informações:
JVM Memory: dados sobre a memória da JVM, incluindo uso de memória heap, uso de memória non-heap e status de coleta de lixo (GC).
Operating System Information: detalhes do sistema operacional, como carga média do sistema, nome do sistema operacional, versão do sistema operacional e versão do Java.
Variable information: informações sobre variáveis, abrangendo propriedades do sistema e variáveis de ambiente.
Análise de tempo de thread
Este recurso exibe todas as threads da sua aplicação e seus rastreamentos de pilha para ajudar a identificar rapidamente as threads que consomem mais tempo.
-
Na página de diagnóstico do Arthas, clique em na aba Threading Time Analysis.
A aba Threading Time Analysis mostra o consumo de tempo das threads em tempo real para o processo atual da JVM e agrupa threads semelhantes. Um resumo da contagem de threads por estado aparece na parte superior da página.
Clique em no ícone + ao lado de um grupo de threads para expandi-lo e ver detalhes de threads individuais, incluindo id da thread, uso de cpu e estado.
-
Para visualize o rastreamento de pilha de uma thread específica, clique em View Live Stack na coluna Actions dessa thread.
A caixa de diálogo Thread Details é aberta, mostrando o nome da thread, o estado de execução e o rastreamento completo da pilha.
Análise de execução de método
Esse recurso captura o tempo de execução, parâmetros de entrada, valores retornados e outras informações de uma única execução de um método. Também é possível analisar detalhadamente suas chamadas internas. Isso ajuda a encontrar rapidamente a causa raiz de chamadas lentas, especialmente para problemas que não podem ser reproduzidos offline ou que possuem logs ausentes.
Na página de diagnóstico do Arthas, clique em na aba Method Execution Analysis.
Na aba Method Execution Analysis, insira uma palavra-chave para o nome da classe na caixa de pesquisa e clique em no ícone de Pesquisa
.-
Nos resultados da pesquisa, selecione a classe que deseja diagnosticar. Em seguida, na caixa de seleção de métodos à direita, escolha um método dessa classe e clique em OK.
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 analisar detalhadamente um método interno, clique em Drill-down na coluna Actions.
-
Para visualize o código-fonte, clique em View Source Code na parte superior da seção Execution Stack.
O tempo de execução de cada método interno é exibido como um comentário no código-fonte.
A seção Method Execution Result à direita apresenta os valores dos parâmetros, valor retornado, exceção, variáveis membro e o id de rastro desta 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 em no ícone
.Tipos de chave de filtro inicial:
params[n]: O n-ésimo parâmetro do método.
returnObj: O valor retornado pelo método.
Method execution time: A duração da execução do método.
Throw exception: Especifica se uma exceção deve ser lançada durante a execução do método.
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 Add.
A condição de filtro adicionada aparece na seção Current Filter Condition.
No canto superior direito da seção Execution Stack, clique em no ícone de Atualizar
para capturar uma nova execução de método com base nas condições definidas.
-
Visualizador de objetos
Utilize 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 membro.
Na página de diagnóstico do Arthas, clique em na aba Object Viewer.
Na aba Object Viewer, insira uma palavra-chave para o nome da classe na caixa de pesquisa e clique em no ícone Search.
-
Nos resultados da pesquisa, selecione a classe que deseja diagnosticar. Depois, na caixa de seleção de instâncias à direita, escolha uma instância dessa classe e clique em OK.
A página passa a exibir os valores em tempo real dos campos dessa instância.
Para campos de tipo simples, o valor é exibido diretamente na coluna Details da seção Object field real-time value.
-
Para campos de tipo complexo, clique em View Details na coluna Details da seção Object field real-time value. Os detalhes do campo são exibidos na seção Field Details à direita.
A seção Field Details suporta desserializar e exibir apenas um nível de um campo complexo. Para visualize dados mais específicos, Click para ver dados mais detalhados do campo.
Painel em tempo real
Use o painel em tempo real para visualize o status instantâneo de componentes essenciais do seu sistema, como pools de conexão de banco de dados e pools de conexão HTTP. Isso auxilia na solução de problemas relacionados a recursos.
Na página de diagnóstico do Arthas, clique em na aba Live Kanban.
-
Na lista suspensa da aba Live Kanban, selecione um painel. Em seguida, na caixa de seleção de instâncias à direita, escolha uma instância para esse painel e clique em Add to dashboard.
A página exibe o status em tempo real desse 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.
Análise de desempenho
A análise de desempenho amostra métricas como tempo de cpu e alocação de memória por um período e gera gráficos de chama correspondentes. Isso ajuda a identificar rapidamente gargalos de desempenho na sua aplicação.
Na página de diagnóstico do Arthas, clique em na aba Performance Analytics.
Abaixo da aba Performance Analytics, clique em Create flame map.
-
Na caixa de diálogo Create flame map, selecione um tipo de gráfico de chama, insira uma duração de amostragem e observações e, em seguida, clique em Confirm.
Parâmetro
Descrição
Exemplo
Flame graph type
O tipo de objeto a ser amostrado. Valores válidos:
-
CPU time
-
Memory allocation
-
Lock Time
-
itimer
CPU time
Sampling duration (seconds)
A duração da amostragem. Intervalo de valores: 10 a 1800.
30
Abaixo da aba Performance Analytics, aparecem as informações da tarefa do gráfico de chama criado, incluindo hora de início, duração da amostragem, observações, tipo de gráfico de chama e status da tarefa.

-
-
Sob a aba Performance Analytics, localize o registro da tarefa. Na coluna Task Status, clique em View flame chart. Baixe o arquivo do gráfico de chama no formato SVG conforme solicitado e abra-o em um navegador.

Arthas Shell
O recurso Arthas Shell está disponível atualmente apenas nas regiões China (Pequim), China (Xangai), China (Hangzhou), China (Shenzhen) e China (Zhangjiakou).
Para obter 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 será aberta. Insira comandos do Arthas no prompt de comando para executar operações de diagnóstico.