O profiling contínuo ajuda a identificar gargalos de desempenho em suas aplicações Java relacionados a CPU, memória e I/O. Ele detalha os dados de desempenho por nome de método, nome de classe e número de linha. Use esses dados para otimizar aplicações, reduzir latência, aumentar o throughput e diminuir custos. Este tópico descreve como ativar o profiling contínuo no ARMS e visualizar os dados de profiling.
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 Product billing (New).
Se você ainda não ativou o novo plano de faturamento, pode alternar para a nova página de detalhes de monitoramento clicando em Switch to New Version na página Apps.
Testes de desempenho mostram que, quando todos os recursos de profiling contínuo estão ativados para uma aplicação Spring Web típica, a sobrecarga de CPU aumenta cerca de 5% e o uso de memória off-heap aumenta cerca de 50 MB. O impacto no GC e na latência de requisições é insignificante. Para mais informações, consulte Performance Test Report for Continuous Profiling with Java Agent v4.x.
Pré-requisitos
O profiling contínuo está disponível apenas na Expert Edition e no modo de faturamento baseado no volume de dados observáveis gravados. Para fazer upgrade para a Expert Edition, consulte Pay-as-you-go. Para alterar seu método de faturamento, consulte Change billing method.
Os dados de profiling contínuo são armazenados por apenas 7 dias.
Ative o monitoramento de aplicações do ARMS para sua aplicação e atualize o agente para a versão v2.7.3.5 ou posterior. Para instruções, consulte Application monitoring overview e Upgrade the ARMS agent.
Se a VPC da sua aplicação possuir uma política que restrinja o acesso a buckets do Object Storage Service (OSS), atualize essa política. O profiling contínuo envia os dados coletados para um bucket dedicado do OSS chamado
arms-profiling-<regionId>para armazenamento e processamento. Adicione este bucket à lista de permissões da sua política. Substitua<regionId>pelo ID da região da sua aplicação. Por exemplo, se sua aplicação estiver na região China (Hangzhou), o nome do bucket seráarms-profiling-cn-hangzhou.Atualmente, o profiling contínuo suporta apenas OpenJDK e Oracle JDK. IBM OpenJ9 e Oracle GraalVM JDK não são suportados.
Limitações
Kernel do sistema operacional
Linux 2.6.32-431.23.3.el6.x86_64 ou superior.
Execute o comando uname -r para verificar a versão do seu kernel.
Versão do JDK
O profiling contínuo no ARMS utiliza a Java Virtual Machine Tool Interface (JVM TI) para obter as pilhas de métodos da sua aplicação. Isso permite obter detalhes sobre o uso de CPU e memória durante a execução. No entanto, a JVM TI possui um problema conhecido de falha que pode causar a interrupção das aplicações. Esse problema foi corrigido nas versões OpenJDK 8u352/11.0.17/17.0.5 e Oracle JDK 11.0.21/17.0.9. A equipe do ARMS realizou testes extensivos em versões anteriores do JDK e constatou que esse problema é raro e ocorre apenas em cenários específicos. Portanto, o ARMS não impede o uso do profiling contínuo em versões do JDK não suportadas. É possível ativar temporariamente o recurso e usar uma lista de permissões de IP para limitar seu escopo. Contudo, para garantir a estabilidade da aplicação, recomendamos fortemente atualizar seu JDK para uma versão suportada. O uso do profiling contínuo em versões mais antigas do JDK acarreta risco de falhas na aplicação.
O profiling contínuo requer símbolos de depuração no JDK. Como as imagens base Alpine são otimizadas para tamanho, elas frequentemente removem esses símbolos de depuração do JDK, o que impede o funcionamento correto do recurso. Caso necessite dessa funcionalidade, recomendamos utilizar uma imagem base não-Alpine.
Versões recomendadas do JDK para profiling contínuo:
|
Tipo |
Versão |
|
OpenJDK |
|
|
Oracle JDK |
|
Ativar o profiling contínuo
Faça login no console do ARMS. No painel de navegação à esquerda, escolha .
-
Na parte superior da página Application List, selecione sua região de destino e clique em nome da aplicação desejada.
NotaOs ícones na coluna Language têm os seguintes significados:
: Uma aplicação Java conectada ao monitoramento de aplicações.
: Uma aplicação Go conectada ao monitoramento de aplicações.
: Uma aplicação Python conectada ao monitoramento de aplicações.-: Uma aplicação conectada ao Managed Service for OpenTelemetry.
Na barra de navegação superior, escolha .
Na seção Continuous profiling, ative a chave principal e defina a IP whitelist ou o IP range.
Clique em Save.
Visualizar dados de profiling contínuo
Faça login no console do ARMS. No painel de navegação à esquerda, escolha .
-
Na parte superior da página Application List, selecione sua região de destino e clique em nome da aplicação desejada.
NotaOs ícones na coluna Language têm os seguintes significados:
: Uma aplicação Java conectada ao monitoramento de aplicações.
: Uma aplicação Go conectada ao monitoramento de aplicações.
: Uma aplicação Python conectada ao monitoramento de aplicações.-: Uma aplicação conectada ao Managed Service for OpenTelemetry.
Na barra de navegação superior, escolha .
Na lista de instâncias à esquerda, selecione a instância desejada. Em seguida, no lado direito da página, defina o intervalo de tempo dos dados que deseja visualizar.
-
Na aba Search à direita, filtre os dados e visualize a análise agregada executando as etapas a seguir:
Na área Time window size, selecione um intervalo de snapshot. Depois, arraste sobre o gráfico para selecionar um intervalo de tempo do snapshot.
Na lista suspensa de tipo de dados, selecione CPU, JVM Heap ou JVM GC.
-
A lista de snapshots exibe os dados dentro do intervalo de tempo selecionado. Clique em Aggregation & Analysis no canto superior direito para ver os detalhes do snapshot.
Figura 1. Análise de desempenho
A página de detalhes do snapshot contém três abas: Performance analysis, Metric list e Snapshot list. Na aba Performance analysis, selecione um tipo de análise, como CPU Time, na lista suspensa e alterne o modo de visualização para Table, Both ou Flamegraph. O lado esquerdo lista o tempo consumido por cada método, enquanto o lado direito mostra a pilha de chamadas em um gráfico de chama.
A coluna Self mostra o tempo ou recursos consumidos pelo próprio método, excluindo o tempo ou recursos consumidos por seus métodos filhos. Isso ajuda a identificar quais métodos gastam uma quantidade significativa de tempo ou recursos internamente.
A coluna Total exibe o tempo ou recursos consumidos pelo próprio método somado a todos os seus métodos filhos. Isso auxilia na compreensão de quais métodos contribuem mais para o consumo de tempo ou recursos de toda a pilha de chamadas.
Para solucionar problemas de código hotspot específico, concentre-se na coluna Self ou examine as barras mais largas na parte inferior do gráfico de chama à direita. Essas barras mais largas representam a causa raiz do alto consumo de recursos nas camadas superiores da pilha e frequentemente indicam gargalos de desempenho do sistema. Preste bastante atenção a elas.
Figura 2. Lista de métricas

Figura 3. Lista de snapshots
A aba Snapshot list exibe os dados de snapshot de cada ponto no tempo, incluindo as seguintes colunas:
Time
Snapshot size
CPU CORES
Memory allocations
Memory (TLAB)
Documentos relacionados
Utilize o recurso de profiling contínuo para solucionar problemas de alta utilização de CPU e memória. Para mais informações, consulte os seguintes tópicos:
Para problemas comuns ao usar o profiling contínuo, consulte FAQ.