Com a criação de perfil em tempo real para Java da New Relic usando a métrica Java Flight Recorder (JFR), você pode executar a criação de perfil contínua e sempre ativa de seu código Java no ambiente de produção. A visualização da linha do tempo do cluster JVM que acompanha fornece uma maneira rápida e intuitiva de diagnosticar problemas de desempenho em todo o cluster. Por exemplo, você pode ver rapidamente como a implantação de um aplicativo afeta a integridade geral do cluster.
Encontre desempenho gargalo
A resolução de problemas performance gargalo em seu aplicativo ou serviço Java pode ajudá-lo a entender melhor o seguinte:
- Onde você está desperdiçando recursos
- Quando ocorre um incidente
- O que aconteceu durante um incidente
- Quais problemas de desempenho levaram a um incidente
Para tornar a resolução de problemas mais rápida e fácil, você precisa ver as características de tempo de execução de alta fidelidade do seu código em execução na JVM e precisa desses dados em tempo real.
DaemonJFR
O daemon JFR é um exportador de eventos JFR que permite aproveitar o poder da plataforma New Relic para visualizar o comportamento de sua JVM. Usando o SDK de telemetria Java da New Relic como implementação subjacente, o daemon JFR converte o evento JFR em tipos de telemetria da New Relic e os reporta à API de ingestão de eventos e métricas da New Relic.
Existem três cenários de uso diferentes para o daemon JFR:
Serviço JFR do agente Java New Relic (RECOMENDADO) - monitoramento JFR integrado ao principal agente Java New Relic. Nenhuma configuração adicional é necessária, basta instalar o agente Java, certificar-se de que o serviço JFR esteja ativado e os dados JFR fluirão para o mesmo aplicativo
que o agente Java. Requer agente Java New Relic versão 7.0.0+.
Note
: O perfil em tempo real do JFR pode ser alternado por meio da configuração do agente no lado do servidor. Isso permite que o perfil seja alternado sem a necessidade de reiniciar o aplicativo de destino.
Processo independente : execute o
jfr-daemon
como um processo independente e configure-o para monitor um processo Java existente usando JMX remoto.Agente Java independente – Anexe o
jfr-daemon
ao seu processo Java como um agente Java. Uma alternativa leve ao agente Java New Relic.
Versões Java suportadas
Embora o daemon JFR suporte qualquer versão do Java 11 e superior, não recomendamos o uso de nenhuma versão não-LTS do Java no ambiente de produção.
Alguns fornecedores fizeram backport do JFR para seus binários Java 8. Por exemplo, o OpenJDK fez backport do JFR na versão 8u262. O daemon JFR é compatível com essas versões Java.
Requisitos e instruções de uso
Os requisitos e instruções variam para cada cenário de uso. Para obter detalhes completos, consulte os links para seu cenário de uso específico:
- Serviço JFR do agente Java New Relic - Requisitos, configuração e instruções de uso
- Processo independente - Requisitos, configuração e instruções de uso
- Agente autônomo Java - Requisitos, configuração e instruções de uso
Importante
Os aplicativos executados com o daemon JFR devem esperar que o subsistema JFR use memória adicional.
Dica
Com o agente Java versão 8.0.0 ou superior, é possível alterar dinamicamente a configuração de criação de perfil JFR sem reiniciar suas JVMs. Faça isso alternando a configuração em Settings > Application > Java Flight Recorder ou alterando a configuração jfr.enabled
.
Ver seus dados
Para visualizar seus dados, vá para one.newrelic.com > All capabilities > APM & Services > (select service) > More views > Realtime Profiling Java.
Entenda o comportamento do cluster JVM ao longo do tempo
A visualização da linha do tempo do cluster JVM mostra o comportamento da JVM em todo o cluster. Este cronograma permite resolução de problemas e detecção de problemas mais rápida; por exemplo, de relance você pode ver:
- Como uma implantação recente afetou o restante do cluster JVM
- Quando uma JVM foi reiniciada
- Como uma instância individual foi afetada por seu vizinho barulhento
Para facilitar a resolução de problemas, você precisa ver as características de tempo de execução de alta fidelidade do seu código em execução na JVM e precisa desses dados em tempo real.
one.newrelic.com > All capabilities > APM & Services > (select service) > Realtime Profiling Java: a visualização da linha do tempo do cluster JVM mostra o comportamento da JVM no cluster.
Cada linha da linha do tempo representa uma JVM específica ao longo do tempo. Dentro de cada linha, uma caixa representa um período de 5 minutos da vida daquela JVM. Do menos grave ao mais grave, os semáforos amarelo, laranja e vermelho indicam comportamento anômalo para uma JVM, para que você possa detalhar essa instância e o período de tempo correto ao investigar erros ou outros problemas de desempenho.
Selecione How is JVM health determined? para obter uma análise detalhada de como a integridade da JVM é calculada.
Detalhes da JVM
Para localizar a página de detalhes da JVM, acesse: one.newrelic.com > All capabilities > APM & Services > (select service) > Realtime Profiling Java > (select JVM).
O painel de detalhes de cada JVM fornece diversas visualizações críticas:
- Porcentagem de uso da CPU do usuário
- Porcentagem de uso da CPU da máquina
- Tamanhos de pilha
- Duração da coleta de lixo
- Pausa mais longa para coleta de lixo
- Utilização da CPU do thread do usuário
- Utilização da CPU do thread do sistema
- Alocação de objetos pequenos por thread
- Alocação de objetos grandes por thread
- Leitura de rede por thread
- Gravação de rede por thread
- Tamanho de alocação de buffer por thread
- Alocação total de threads
- Alocação total de objetos por thread
- Metaespaço
Identifique caminhos de código que consomem muitos recursos com gráficos em degradê
Importante
O recurso de gráfico em degradê é compatível apenas com o cenário de uso do serviço JFR do agente Java da New Relic .
Um "gráfico em chamas" é uma forma de visualizar a árvore de chamadas. Cada bloco no gráfico representa uma função. Quanto mais tempo de CPU e recursos de memória um método consome, maior será o bloco.
Use gráficos em degradê para identificar as classes e métodos Java que são executados com mais frequência no código do seu aplicativo. Ao usar gráficos em degradê para otimizar os pontos de acesso em seu código, você pode reduzir o consumo de recursos e aumentar o desempenho geral do seu aplicativo.
Aqui estão alguns detalhes sobre as cores do gráfico em chama:
- Gradiente de cinza: aplicamos o gradiente de cinza aos métodos de um pacote Java SE. As contagens de chamadas mais baixas têm tons mais claros, mudando gradualmente para tons mais escuros à medida que a contagem de chamadas aumenta.
- Gradiente amarelo-laranja: Aplicamos o gradiente amarelo-laranja a métodos de outras bibliotecas. As contagens de chamadas mais baixas têm mais cores amarelas, mudando gradualmente para cores mais laranja à medida que a contagem de chamadas aumenta.
one.newrelic.com > APM & Services > (select service) > Realtime Profiling Java > (select JVM): você pode ver detalhes de cada JVM, incluindo gráficos em degradê.