O profiling de threads fornece estatísticas sobre o consumo de tempo de CPU no nível da thread e a quantidade de threads por tipo. Quando a utilização da CPU de um cluster está alta ou quando há detecção de muitos métodos lentos, esse recurso ajuda a rastrear o problema até threads e métodos específicos. O ARMS registra e agrega pilhas de métodos a cada 5 minutos, oferecendo uma visualização em série temporal dos caminhos de código que mais consomem recursos.
Pré-requisitos
Sua aplicação deve estar conectada ao Application Monitoring do ARMS. Para obter instruções de configuração, consulte o guia de início rápido da sua linguagem (Java, Go ou Python).
-
Os dados de pilha de métodos exigem configurações adicionais conforme a versão do seu agente ARMS:
Versão do agente ARMS
Configuração necessária
Anterior à 2.7.3.5
Ative Thread Profiling Method Stack em Application Settings > Custom Configuration > Thread Settings. Para mais detalhes, veja a seção "Ativar coleta de pilha de métodos" abaixo.
2.7.3.5 ou posterior
Ative tanto Main switch quanto CPU hotspot em Application Settings > Custom Configuration > Continuous profiling. Para mais detalhes, veja a seção "Ativar coleta de pilha de métodos" abaixo.
Abrir a página de profiling de threads
Faça login no console do ARMS.
No painel de navegação à esquerda, escolha Application Monitoring > Application List.
-
Na página Application List, selecione uma região na barra de navegação superior e clique em nome da aplicação.
NotaOs ícones na coluna
Language
indicam a linguagem da aplicação: -

: Java -

: Go -

: Python - Hífen (
-
): aplicação monitorada via Managed Service for OpenTelemetry.
No painel de navegação à esquerda, escolha Application Diagnosis > Threads Profiling.
Identificar hotspots de CPU
A página Threads Profiling lista todas as threads no painel esquerdo com seus respectivos valores de CPU Time Consumption (ms). Esse valor representa o tempo total de CPU consumido por uma thread durante cada janela de amostragem de 5 minutos.

Para encontrar as threads responsáveis pelo alto uso de CPU:
Ordene ou percorra a lista de threads por CPU Time Consumption (ms). Concentre-se nas threads com valores significativamente maiores que os demais.
Selecione uma thread para visualizar os gráficos de série temporal de CPU Time Consumption (ms) e Thread Count. Analise, por exemplo, se o número total de threads por minuto está excessivo.
-
Observe os seguintes padrões comuns:
Padrão
Causa provável
Ação recomendada
Tempo de CPU consistentemente alto em uma única thread
Loop ineficiente, computação pesada ou backtracking de regex
Inspecione a pilha de métodos para identificar o método crítico
Pico repentino na contagem de threads
Pool de threads superdimensionado ou vazamento de threads
Verifique a configuração do pool de threads e se elas estão sendo devolvidas corretamente
Múltiplas threads com tempo de CPU similar
Contenção de lock ou trabalho paralelo redundante
Filtre pelo estado BLOCKED e revise o lock em disputa
Aumento do tempo de CPU após uma implantação
Regressão de desempenho no novo código
Compare as pilhas de métodos antes e depois da implantação usando o seletor de tempo
Inspecionar pilhas de métodos
Clique em Method Stack para visualizar a pilha de chamadas capturada durante uma janela de tempo específica. A pilha de métodos mostra quais caminhos de código consumiram tempo de CPU ou causaram bloqueio de threads.

Exemplo: reduzir uso de CPU causado por contenção de lock
Filtre as threads pelo estado BLOCKED.
Abra a pilha de métodos de uma thread bloqueada.
Identifique o bloco de código que detém o lock e otimize-o. Por exemplo, reduza o escopo do bloco sincronizado ou mude para uma estrutura de dados concorrente.
Continuous profiling (agente ARMS 2.7.3.5 ou posterior)
Se a versão do seu agente ARMS for 2.7.3.5 ou posterior, o continuous profiling oferece informações mais precisas sobre as pilhas de métodos e a utilização de CPU das threads.

Para mais detalhes, consulte Usar o recurso de diagnóstico de CPU e memória.
Ativar coleta de pilha de métodos
Se nenhum dado aparecer ao clicar em Method Stack, a coleta de pilha de métodos não está ativada. Siga as etapas correspondentes à versão do seu agente ARMS:
Agente ARMS anterior à 2.7.3.5
No painel de navegação à esquerda da aplicação, clique em Application Settings.
Clique em aba Custom Configuration.
Na seção Thread Settings, ative Thread Profiling Method Stack. Após ativar essa opção, o ARMS coletará dados de pilha de métodos a cada 5 minutos.
Agente ARMS 2.7.3.5 ou posterior
No painel de navegação à esquerda da aplicação, clique em Application Settings.
Clique em aba Custom Configuration.
Na seção Continuous profiling, ative tanto Main switch quanto CPU hotspot.
Correlacionar com outras ferramentas de diagnóstico
O profiling de threads torna-se mais eficaz quando combinado com outros recursos de diagnóstico do ARMS:
Correlação de traces: Cruze os dados de profiling de threads com traces lentos em Application Diagnosis > Trace Query para associar o alto consumo de CPU a requisições específicas.
Comparação de implantações: Use o seletor de tempo na página Threads Profiling para comparar o consumo de CPU antes e depois de uma implantação e identificar regressões de desempenho.
Atualização para continuous profiling: Para o agente ARMS 2.7.3.5 ou posterior, o recurso de diagnóstico de CPU e memória fornece pilhas de métodos e dados de utilização de CPU mais precisos do que o profiling de threads tradicional.