Todos os produtos
Search
Central de documentação

Application Real-Time Monitoring Service:Use thread profiling

Última atualização: Jun 27, 2026

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

  1. Faça login no console do ARMS.

  2. No painel de navegação à esquerda, escolha Application Monitoring > Application List.

  3. Na página Application List, selecione uma região na barra de navegação superior e clique em nome da aplicação.

    Nota

    Os ícones na coluna

    Language

    indicam a linguagem da aplicação: -

    Java图标

    : Java -

    image

    : Go -

    image

    : Python - Hífen (

    -

    ): aplicação monitorada via Managed Service for OpenTelemetry.

  4. 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.

Thread profiling overview

Para encontrar as threads responsáveis pelo alto uso de CPU:

  1. Ordene ou percorra a lista de threads por CPU Time Consumption (ms). Concentre-se nas threads com valores significativamente maiores que os demais.

  2. 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.

  3. 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.

Method stack view

Exemplo: reduzir uso de CPU causado por contenção de lock

  1. Filtre as threads pelo estado BLOCKED.

  2. Abra a pilha de métodos de uma thread bloqueada.

  3. 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.

Continuous profiling view

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

  1. No painel de navegação à esquerda da aplicação, clique em Application Settings.

  2. Clique em aba Custom Configuration.

  3. 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

  1. No painel de navegação à esquerda da aplicação, clique em Application Settings.

  2. Clique em aba Custom Configuration.

  3. 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.