Todos os produtos
Search
Central de documentação

Application Real-Time Monitoring Service:Profiling de threads

Última atualização: Aug 25, 2026

O profiling de threads fornece estatísticas no nível de thread sobre tempo de CPU e contagem de threads por tipo. Esse recurso registra e agrega a pilha de métodos das threads a cada 5 minutos para reconstruir a execução real do código e ajudar a identificar rapidamente problemas relacionados a threads. Se você notar alta utilização de CPU no cluster ou um grande número de métodos lentos, use o profiling de threads para encontrar as threads ou os métodos que mais consomem CPU.

Nota

Este recurso está disponível atualmente apenas para aplicações Java.

Pré-requisitos

Importante

O monitoramento de aplicações do ARMS oferece uma nova página de detalhes de monitoramento para usuários no novo plano de faturamento. Para obter mais informações sobre o novo plano de faturamento, consulte Billing (New).

Caso ainda não tenha ativado o novo plano de faturamento, clique em Switch to New Version na página Application List.

Sua aplicação deve ter um agente instalado. Para mais informações, consulte Application Monitoring Integration Overview.

Procedimento

  1. Faça login no console do ARMS. No painel de navegação à esquerda, escolha Application Monitoring > Application List.

  2. Na página Application List, selecione a região desejada na parte superior e clique em nome da sua aplicação.

    Nota

    Os ícones na coluna Language têm os seguintes significados:

    Java图标: Uma aplicação Java integrada ao monitoramento de aplicações.

    image: Uma aplicação Go integrada ao monitoramento de aplicações.

    image: Uma aplicação Python integrada ao monitoramento de aplicações.

    -: Uma aplicação integrada ao Managed Service for OpenTelemetry.

  3. Na barra de navegação superior, escolha Application Diagnostics > Thread Profiling.

Analisar threads

A lista à esquerda da página Thread Profiling exibe todas as threads da aplicação e permite localizar rapidamente threads anômalas pelo CPU time. Após selecionar uma thread anômala, use os gráficos à direita para analisar o CPU time e o Number of Threads. Verifique, por exemplo, se a contagem total de threads por minuto é excessiva.

Para qualquer thread anômala, clique em Method Stack para visualizar a pilha de métodos em tempo de execução durante um período específico. É possível, por exemplo, visualizar os métodos correspondentes a threads no estado BLOCKED. Isso ajuda a identificar segmentos de código específicos para otimização e redução da utilização da CPU.

ALL: 365194  RUNNABLE: 986  BLOCKED: 87  WAITING: 1498  TIMED_WAITING: 362617

【BLOCKED】81/87 (times) - Percentage: 93.10%
at java.lang.Object.wait (Native Method)
  at xxx.awaitAvailable (BasicResourcePool.java:1315)
  at xxx.prelimCheckoutResource (BasicResourcePool.java:557)
  at xxx.checkoutResource (BasicResourcePool.java:477)
  at xxx.checkoutPooledConnection (C3P0PooledConnectionPool.java:525)
  at xxx.getConnection (AbstractPoolBackedDataSource.java:128)
  at xxx.getConnection (PoolingConnectionProvider.java:247)
  at xxx.getConnection (DBConnectionManager.java:108)
  at xxx.getConnection (JobStoreSupport.java:775)
  at com.alibaba.arms.alert.scheduler.xxx.EnhanceJobStoreSupport.getNonManagedTXConnection (EnhanceJobStoreSupport.java:17)
  at xxx.executeInNonManagedTXLock (JobStoreSupport.java:3777)
  at xxx.retryExecuteInNonManagedTXLock (JobStoreSupport.java:3742)
  at xxx.triggeredJobComplete (JobStoreSupport.java:3039)
  at xxx.notifyJobStoreJobComplete (QuartzScheduler.java:1804)
  at xxx.JobRunShell.java:269)
  at xxx$WorkerThread.run (SimpleThreadPool.java:573)

【BLOCKED】2/87 (times) - Percentage: 2.30%
at xxx.checkinStatement (GooGooStatementCache.java:220)
  at xxx.checkinStatement (NewPooledConnection.java:239)
  at xxx.close (NewProxyPreparedStatement.java:1807)
  at xxx.closeStatement (StdJDBCDelegate.java:3287)
  at xxx.deleteFiredTrigger (StdJDBCDelegate.java:2916)
  at xxx.triggeredJobComplete (JobStoreSupport.java:3116)
  at xxx.executeVoid (JobStoreSupport.java:3043)
  at xxx.$VoidTransactionCallback.execute (JobStoreSupport.java:3703)
  at xxx.$VoidTransactionCallback.execute (JobStoreSupport.java:3701)
  at xxx.executeInNonManagedTXLock (JobStoreSupport.java:3787)
  at xxx.retryExecuteInNonManagedTXLock (JobStoreSupport.java:3742)
  at xxx.triggeredJobComplete (JobStoreSupport.java:3039)
  at xxx.notifyJobStoreJobComplete (QuartzScheduler.java:1804)
  at xxx.JobRunShell.java:269)
  at xxx.WorkerThread.run (SimpleThreadPool.java:573)

【BLOCKED】1/87 (times) - Percentage: 1.15%

Se a versão do seu agente for 2.7.3.5 ou posterior, o ARMS utiliza continuous profiling para fornecer informações mais precisas sobre a pilha de métodos no uso de CPU das threads. A figura a seguir mostra um exemplo. Para mais informações, consulte continuous profiling.

image

Nota

Se nenhum dado aparecer após clicar em Method Stack, siga estas etapas para solucionar o problema:

  • Caso a versão do seu agente seja anterior a 2.7.3.5, acesse a seção Thread Settings na aba Application Configuration > Custom Configurations e verifique se a chave Method stack for thread profiling está ativada. Se essa chave estiver desativada, as informações da pilha de métodos não serão registradas. Quando ativada, a coleta ocorre a cada 5 minutos.

  • Para versões do agente 2.7.3.5 ou posteriores, acesse a seção Continuous profiling na aba Application Configuration > Custom Configurations e confirme se tanto o main switch quanto a chave CPU hotspots estão ativados. Ambas as chaves precisam estar habilitadas para registrar as informações da pilha de métodos.