Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Nota
A funcionalidade Java Profiler está em pré-visualização desde a versão 3.4.0.
O Java Profiler fornece um sistema para:
- Geração de perfis JDK Flight Recorder (JFR) a pedido a partir da máquina virtual Java (JVM).
- Gerar perfis JFR automaticamente quando determinadas condições de gatilho são atendidas pela JVM, como CPU ou memória violando um limite configurado.
Descrição geral
O Java Profiler usa o criador de perfil JFR fornecido pela JVM para gravar dados de criação de perfil, permitindo que os usuários baixem as gravações JFR posteriormente e as analisem para identificar a causa dos problemas de desempenho.
Estes dados são recolhidos a pedido quando as condições de desencadeamento são satisfeitas. Os gatilhos disponíveis são limites sobre o uso da CPU, consumo de memória e solicitação (gatilhos de contrato de nível de serviço). Os gatilhos de solicitação monitorizam os Spans gerados pelo OpenTelemetry e permitem que o utilizador configure os requisitos de acordo de nível de serviço (SLA) para a duração desses Spans.
Quando um limite é atingido, um perfil do tipo e duração configurados é reunido e carregado. Esse perfil fica visível no painel de desempenho da interface do usuário associada do Application Insights Portal.
Aviso
O perfilador JFR por predefinição executa o perfil "profile-without-env-data". Um arquivo JFR é uma série de eventos emitidos pela JVM. A configuração "profile-without-env-data" é semelhante à configuração "profile" que acompanha a JVM, no entanto, teve alguns eventos desativados que têm o potencial de conter informações confidenciais de implantação, como variáveis de ambiente, argumentos fornecidos à JVM e processos em execução no sistema.
As bandeiras que não estão mais disponíveis são:
- JDK. JVMInformação
- JDK.InitialSystemProperty
- jdk.OSInformação
- JDK.InitialEnvironmentVariable
- jdk.SystemProcess
No entanto, você deve revisar todos os sinalizadores habilitados para garantir que os perfis não contenham dados confidenciais.
Consulte Configuração dos Conteúdos do Perfil para definir uma configuração personalizada do perfilador.
Pré-requisitos
JVM com funcionalidade de Java Flight Recorder (JFR)
- Atualização do Java 8 262+
- Java 11+
Aviso
A JVM OpenJ9 não é suportada
Utilização
Acionadores
Para obter uma descrição mais detalhada dos vários gatilhos disponíveis, consulte Perfis de aplicativos de produção no Azure com o Application Insights Profiler para .NET.
O ApplicationInsights Java Agent monitora a CPU, a memória e a duração da solicitação, como uma transação comercial. Se ele ultrapassar um limite configurado, um perfil será acionado.
Perfil agora
Um botão Perfil agora está localizado na interface do usuário do criador de perfil (consulte Configurar o Application Insights Profiler para .NET). Selecionar esse botão solicita imediatamente um perfil em todos os agentes anexados à instância do Application Insights. A duração padrão da criação de perfil é de dois minutos. Você pode alterá-lo substituindo periodicRecordingDurationSeconds
(consulte Arquivo de configuração).
Aviso
Invocar Perfil agora habilitará o recurso de criador de perfil e o Application Insights aplicará gatilhos de SLA de CPU e memória padrão. Quando seu aplicativo viola esses SLAs, o Application Insights coleta perfis Java. Se você deseja desativar a criação de perfil mais tarde, você pode fazê-lo dentro do menu de gatilho mostrado em Instalação.
Unidade Central de Processamento (CPU)
O limite de CPU é uma porcentagem do uso de todos os núcleos disponíveis no sistema.
Por exemplo, se um núcleo de uma máquina de oito núcleos estivesse saturado, a percentagem de CPU seria considerada 12,5%.
Memória
A porcentagem de memória é a ocupação atual da região de memória permanente (OldGen) em relação ao tamanho máximo possível da região.
A ocupação é avaliada após a realização de uma coleta permanente. O tamanho máximo da região tenured é o tamanho que seria se o heap Java Virtual Machine (JVM) crescesse para seu tamanho máximo.
Por exemplo, considere o seguinte cenário:
- A heap Java poderia crescer até um máximo de 1.024 MB.
- A Geração Tenured poderia crescer até 90% da pilha.
- O tamanho máximo possível de tenured seria de 922 mb.
- Seu limite foi definido através da interface do usuário para 75%, portanto, seu limite seria 75% de 922 mb, 691 mb.
Nesse cenário, um perfil ocorre nas seguintes circunstâncias:
- A coleta completa de lixo é executada
- A ocupação das regiões de longa duração é superior a 691 mb após a recolha
Pedido
Os gatilhos de SLA são baseados em OpenTelemetry e iniciam um perfil se determinados critérios forem atendidos.
Cada configuração de gatilho individual é formada da seguinte forma:
-
Name
- Um identificador único para o gatilho. -
Filter
- Filtra os pedidos de interesse para o gatilho. -
Aggregation
- Calcula o rácio de pedidos que ultrapassaram um determinado limiar.-
Threshold
- Um valor mínimo (em milissegundos) no qual uma violação de solicitação é determinada para ocorrer. -
Minimum samples
- O número mínimo de amostras que devem ser coletadas para que a agregação produza dados, esta configuração é para evitar o desencadeamento de amostras pequenas. -
Window
- Janela de tempo de rolamento (em milissegundos).
-
-
Threshold
- O valor limite (percentagem) aplicado à saída da agregação. Se esse valor for excedido, um perfil é ativado.
Por exemplo, o seguinte cenário acionaria um perfil se: mais de 75% das solicitações para um ponto de extremidade específico (/users/.*) demorarem mais de 30 ms dentro de uma janela de 60 segundos, quando pelo menos 100 amostras foram coletadas.
Instalação
As etapas a seguir o orientam na habilitação do componente de criação de perfil no agente e na configuração de limites de recursos que acionam um perfil se violado.
Configure os limites de recursos que fazem com que um perfil seja coletado:
Aviso
O botão Rastreamentos do Profiler no canto inferior direito não é suportado para Java.
Selecione gatilhos
Configure os gatilhos de CPU, Memória ou Solicitação necessários (se habilitados) e selecione Aplicar.
Aviso
O Java Profiler não suporta o gatilho "Amostragem". Configurar isso não terá efeito.
Depois que essas etapas forem concluídas, o agente monitorará o uso de recursos do seu processo e acionará um perfil quando o limite for excedido. Quando um perfil é acionado e concluído, ele pode ser visualizado na instância do Application Insights na seção Performance ->Profiler . A partir dessa tela o perfil pode ser baixado, uma vez baixado o arquivo de gravação JFR pode ser aberto e analisado dentro de uma ferramenta de sua escolha, por exemplo Oracle JDK Mission Control (JMC).
Configuração
A configuração das definições de acionamento do Java Profiler, como limites e períodos de criação de perfil, é feita na interface do utilizador do Application Insights em Performance>Profiler>Gatilhos, conforme descrito em Instalação.
Além disso, muitos parâmetros podem ser configurados usando variáveis de ambiente e o arquivo de applicationinsights.json
configuração.
Configurando o conteúdo do perfil
Se desejar fornecer uma configuração de perfil personalizada, altere o memoryTriggeredSettings
e o cpuTriggeredSettings
para fornecer o caminho para um arquivo .jfc
com a configuração necessária.
Os perfis podem ser gerados/editados na interface do utilizador do JDK Mission Control (JMC) no menu Window->Flight Recording Template Manager
, e o controlo sobre sinalizadores individuais é encontrado dentro da interface Edit->Advanced
dessa interface do utilizador.
Variáveis de ambiente
APPLICATIONINSIGHTS_PREVIEW_PROFILER_ENABLED
: booleano (padrão:true
)Habilita/desabilita o recurso de criação de perfil. Por padrão, o recurso é ativado dentro do agente (desde o agente 3.4.9). No entanto, mesmo que esse recurso esteja habilitado dentro do agente, os perfis não são coletados, a menos que sejam habilitados no Portal, conforme descrito em Instalação.
Arquivo de configuração
Exemplo de configuração:
{
"preview": {
"profiler": {
"enabled": true,
"cpuTriggeredSettings": "profile-without-env-data",
"memoryTriggeredSettings": "profile-without-env-data",
"manualTriggeredSettings": "profile-without-env-data",
"enableRequestTriggering": true,
"periodicRecordingDurationSeconds": 60
}
}
}
memoryTriggeredSettings
Essa configuração é usada se um perfil de memória for solicitado.
Este valor pode ser um de:
-
profile-without-env-data
(valor padrão). Um perfil com determinados eventos sensíveis desativados, consulte a seção Aviso para obter detalhes. -
profile
. Usa a configuração que acompanha oprofile.jfc
JFR. - Um caminho para um arquivo de configuração jfc personalizado no sistema de arquivos, por exemplo,
/tmp/myconfig.jfc
.
cpuTriggeredSettings
Essa configuração é usada se um perfil de CPU for solicitado.
Este valor pode ser um de:
-
profile-without-env-data
(valor padrão). Um perfil com determinados eventos sensíveis desativados, consulte a seção Aviso para obter detalhes. -
profile
. Usa a configuração JFC fornecida com oprofile.jfc
JFR. - Um caminho para um arquivo de configuração jfc personalizado no sistema de arquivos, por exemplo,
/tmp/myconfig.jfc
.
manualTriggeredSettings
Essa configuração é usada se um perfil manual for solicitado.
Este valor pode ser um de:
-
profile-without-env-data
(valor padrão). Um perfil com determinados eventos sensíveis desativados, consulte a seção Aviso para obter detalhes. -
profile
. Usa a configuração JFC fornecida com oprofile.jfc
JFR. - Um caminho para um arquivo de configuração jfc personalizado no sistema de arquivos, por exemplo,
/tmp/myconfig.jfc
.
enableRequestTriggering
Se a criação de perfil JFR deve ser acionada com base na configuração da solicitação.
Este valor pode ser um de:
-
true
A monitorização do desempenho é iniciada se um limiar de ativação de solicitação for ultrapassado. -
false
(valor padrão). A configuração de solicitação não aciona a criação de perfil.
periodicRecordingDurationSeconds
Duração da gravação de perfilagem em segundos quando uma sessão de perfilagem é iniciada ao usar o botão Perfil agora. O valor predefinido é 120
.
Próximos passos
- Para revisar as perguntas freqüentes (FAQ), consulte Perguntas frequentes do Java Profiler