A criação de perfil contínua identifica gargalos de CPU, memória ou E/S em sua aplicação Java no nível de método, com detalhamento por nome da classe, nome do método e número da linha. Use esse recurso para localizar métodos que consomem muitos recursos, reduzir a latência, aumentar o throughput e diminuir os custos de infraestrutura.
A sobrecarga é mínima. Em um benchmark com todos os recursos ativados em uma aplicação Spring Web convencional, a utilização da CPU aumentou cerca de 5%, a memória off-heap cresceu aproximadamente 50 MB e a latência de GC e de requisições praticamente não sofreu alterações. Para resultados detalhados, consulte Relatório de teste de desempenho da tecnologia de criação de perfil contínua do agente ARMS para Java v4.x.
Pré-requisitos
Antes de começar, verifique se você tem:
Application Monitoring Pro Edition com o modo de faturamento pagamento conforme dados observáveis. Para ativar a Pro Edition, consulte Pagamento conforme o uso. Para alterar os modos de faturamento, consulte Faturamento
Uma aplicação monitorada pelo Application Monitoring com o agente ARMS versão 2.7.3.5 ou posterior. Para obter instruções de configuração, consulte Visão geral do Application Monitoring. Para atualizar o agente, consulte Atualizar o agente ARMS
Um bucket do Object Storage Service (OSS) especificado na política de controle de acesso da Virtual Private Cloud (VPC) onde sua aplicação é executada. Esse bucket armazena os dados de perfil e segue o padrão de nomenclatura
arms-profiling-<regionId>. Substitua<regionId>pelo ID da sua região. Por exemplo, se sua aplicação for executada na região China (Hangzhou), usearms-profiling-cn-hangzhou. Se o bucket não for especificado, a coleta de dados falharáOpenJDK ou Oracle JDK. Outras distribuições de JDK não têm suporte
Os dados de criação de perfil contínua são retidos por 7 dias.
Limites
Versão do kernel Linux
O kernel Linux deve ser da versão 2.6.32-431.23.3.el6.x86_64 ou posterior. Execute uname -r para verificar a versão do seu kernel.
Versão do JDK
A criação de perfil contínua usa a JVM TI (Java Virtual Machine Tool Interface) para capturar pilhas de métodos durante a execução. Isso fornece detalhes de utilização de CPU e uso de memória no nível de método.
Algumas versões do JDK contêm um bug na JVM TI (JDK-8283849) que pode causar falhas na aplicação. As versões abaixo corrigiram esse problema:
|
JDK |
Versões recomendadas |
|
OpenJDK |
8u352+, 11.0.17+, 17.0.5+ |
|
Oracle JDK |
11.0.21+, 17.0.9+ |
Testes internos indicam que falhas ocorrem em cenários raros para outras versões do JDK. O recurso permanece disponível; portanto, ative-o para endereços IP específicos e avalie a estabilidade antes da implantação ampla. Para cargas de trabalho em produção, use uma versão recomendada do JDK.
Imagens base Alpine não têm suporte
A criação de perfil contínua depende dos símbolos de depuração presentes nos JDKs. Imagens base Alpine removem esses símbolos para controlar o uso de memória, o que impede o profiler de coletar dados. Use uma imagem base diferente de Alpine.
Ativar a criação de perfil contínua no console ARMS
Faça login no console 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
: PythonHífen (-): aplicação monitorada no Managed Service for OpenTelemetry
No painel de navegação à esquerda, clique em Application Settings e, em seguida, na aba Custom Configuration.
Na seção Continuous profiling, ative a opção Main Switch e configure a IP white list ou o Network segment address para definir quais instâncias terão o perfil coletado.
Clique em Save.
Visualizar dados de perfil
Após ativar a criação de perfil contínua e sua aplicação processar tráfego, visualize os dados de perfil.
No console ARMS, acesse Application Monitoring > Application List, selecione uma região e clique em nome da aplicação.
No painel de navegação à esquerda, clique em Continuous profiling.
Selecione uma instância da aplicação na lista e defina o intervalo de tempo no lado direito da página.
-
Na aba Single View, explore os dados de perfil:
Na seção Time window size, selecione uma duração de snapshot e arraste no gráfico de linhas para restringir o intervalo de tempo.
Na lista suspensa, escolha os dados que deseja visualizar: CPU, heap da JVM ou GC da JVM.
Analise os dados do intervalo de tempo selecionado e clique em Aggregate analysis para examinar os detalhes do snapshot.

Interpretar os resultados do perfil
A visualização de análise agregada exibe um detalhamento no nível de método ao lado de um gráfico de chama.

|
Coluna |
Descrição |
Quando usar |
|
Self |
Tempo ou recursos consumidos exclusivamente pelo método, excluindo métodos filhos. |
Identificar métodos individualmente custosos. |
|
Total |
Tempo ou recursos consumidos pelo método, incluindo todos os métodos filhos. |
Encontrar caminhos de chamada que mais contribuem para o uso geral de recursos. |
Ao analisar código com hotspots, concentre-se na coluna Self ou nos quadros mais largos na parte inferior do gráfico de chama. Um quadro largo na base geralmente indica um gargalo de desempenho: quanto mais largo o quadro, mais recursos o método consumiu em relação ao total.


Comparar dados entre períodos de tempo
Na aba Comparison View, selecione dois períodos de tempo para comparar os dados de perfil lado a lado. Essa comparação ajuda a identificar regressões de desempenho ou verificar o impacto de alterações no código.
Tópicos relacionados
-
Diagnosticar problemas específicos de desempenho:
Solucionar problemas comuns na criação de perfil contínua.