Avec le profilage en temps réel de New Relic pour Java à l'aide des métriques Java Flight Recorder (JFR), vous pouvez exécuter un profilage continu et permanent de votre code Java dans un environnement de production. La vue chronologique du cluster JVM qui l'accompagne fournit un moyen rapide et intuitif de diagnostiquer les problèmes de performances à l'échelle du cluster. Par exemple, vous pouvez rapidement voir comment le déploiement d’une application affecte la santé globale du cluster.
Retrouvez les spectacles goulot d'étranglement
Dépannage des performances du goulot d'étranglement dans votre Java application ou service peut vous aider à mieux comprendre les éléments suivants :
- Où vous gaspillez des ressources
- Lorsqu'un incident se produit
- Que s'est-il passé lors d'un incident
- Quels problèmes de performances ont conduit à un incident
Pour rendre le dépannage plus rapide et plus simple, vous devez voir les caractéristiques d'exécution haute fidélité de votre code exécuté sur la JVM, et vous avez besoin de ces données en temps réel.
JFR daemon
Le daemon JFR est un exportateur d'événement JFR qui vous permet d'exploiter la puissance de la plateforme New Relic pour visualiser le comportement de votre JVM. En utilisant le Java SDK de télémétrie de New Relic comme implémentation sous-jacente, le daemon JFR convertit l'événement JFR en New Relic types de télémétrie et les rapporte à New Relic d'ingestion de métrique et d'événement de API.
Il existe trois scénarios d'utilisation différents pour le daemon JFR :
- New Relic Java agent JFR service (RECOMMANDÉ) - JFR monitoring intégrée à agent Java de New Relic l'phare . Aucune configuration supplémentaire n'est nécessaire, installez simplement l'agent Java, assurez-vous que le service JFR est activé et les données JFR circuleront dans la même application que l'agent Java. Nécessite l'agent Java de New Relic version 7.0.0+.
- Note: Le profilage en temps réel JFR peut être activé via la configuration côté serveur de l'agent. Cela permet de basculer entre les profils sans avoir besoin de redémarrer l'application cible.
- Processus autonome - Exécutez
jfr-daemon
en tant que processus autonome et configurez-le pour monitorer un processus Java existant à l'aide de JMX distant. - agent Javaautonome - Attachez le
jfr-daemon
à votre processus Java en tant agent Java. Une alternative légère à l'agent Java New Relic.
Versions Java prises en charge
Bien que le daemon JFR prenne en charge toutes les versions de Java 11 et supérieures, nous ne recommandons pas d'utiliser une version non LTS de Java dans un environnement de production.
Certains fournisseurs ont rétroporté JFR vers leurs binaires Java 8. Par instance, OpenJDK a rétroporté JFR sur la version 8u262. Le daemon JFR est compatible avec ces versions Java.
Exigences et instructions d'utilisation
Les exigences et les instructions varient pour chaque scénario d’utilisation. Pour plus de détails, veuillez consulter les liens correspondant à votre scénario d'utilisation spécifique :
- Service JFR de l'agent Java New Relic - Exigences, configuration et instructions d'utilisation
- Processus autonome - Exigences, configuration et instructions d'utilisation
- agent autonome Java - Exigences, configuration et instructions d'utilisation
Important
Les applications exécutées avec le daemon JFR doivent s'attendre à ce que le sous-système JFR utilise de la mémoire supplémentaire.
Conseil
Avec agent Java sortie 8.0.0 ou supérieur, vous pouvez modifier dynamiquement votre configuration de profilage JFR sans redémarrer vos JVM. Pour ce faire, basculez le paramètre dans Settings > Application > Java Flight Recorder ou en modifiant la configuration jfr.enabled
.
Visualisez vos données
Pour visualiser vos données, accédez à one.newrelic.com > All capabilities > APM & Services > (select service) > More views > Realtime Profiling Java.
Comprendre le comportement du cluster JVM au fil du temps
La vue chronologique du cluster JVM montre le comportement de la JVM sur l’ensemble de votre cluster. Cette chronologie permet un dépannage et une détection des problèmes plus rapides ; par exemple, en un coup d'œil, vous pouvez voir :
- Comment un déploiement récent a affecté le reste du cluster JVM
- Lorsqu'une JVM a redémarré
- Comment une instance individuelle a été affectée par son voisin bruyant
Pour faciliter le dépannage, vous devez voir les caractéristiques d’exécution haute fidélité de votre code exécuté sur la JVM, et vous avez besoin de ces données en temps réel.

one.newrelic.com > All capabilities > APM & Services > (select service) > Realtime Profiling Java: La vue chronologique du cluster JVM montre le comportement de la JVM sur le cluster.
Chaque ligne de la chronologie représente une JVM spécifique au fil du temps. À l'intérieur de chaque ligne, une case représente une période de 5 minutes de la vie de cette JVM. Du moins grave au plus grave, les feux tricolores jaune, orange et rouge indiquent un comportement anormal d'une JVM, ce qui vous permet d'explorer en détail cette instance et la bonne période lors de l'examen des erreurs ou d'autres problèmes de performances.

Sélectionnez How is JVM health determined? pour une analyse détaillée de la manière dont l’état de la JVM est calculé.
Détails de la JVM
Pour trouver la page des détails de la JVM, accédez à : one.newrelic.com > All capabilities > APM & Services > (select service) > Realtime Profiling Java > (select JVM).
Le panneau de détails de chaque JVM fournit plusieurs vues critiques :
- Pourcentage d'utilisation du processeur par l'utilisateur
- Pourcentage d'utilisation du processeur de la machine
- Tailles de tas
- Durée de la collecte des déchets
- La plus longue pause de collecte des déchets
- Utilisation du processeur par thread utilisateur
- Utilisation du processeur par le thread système
- Allocation de petits objets par thread
- Allocation d'objets volumineux par thread
- Lecture réseau par thread
- Écriture réseau par thread
- Taille d'allocation de tampon par thread
- Allocation totale de threads
- Allocation totale d'objets par thread
- Métaespace
Identifiez les chemins de code gourmands en ressources avec des graphiques de flammes
Important
La fonctionnalité de graphique de flamme est uniquement compatible avec le scénario d'utilisation du service JFR de l'agent Java New Relic .
Un « graphique de flamme » est un moyen de visualiser l’arbre d’appel. Chaque bloc du graphique représente une fonction. Plus une méthode consomme de temps CPU et de ressources mémoire, plus ce bloc est large.
Utilisez des graphiques de flammes pour identifier les classes et méthodes Java les plus fréquemment exécutées dans le code de votre application. En utilisant des graphiques de flammes pour optimiser les points chauds de votre code, vous pouvez réduire la consommation de ressources et augmenter les performances globales de votre application.
Voici quelques détails sur les couleurs du graphique de flamme :
- Dégradé gris : nous appliquons le dégradé gris aux méthodes d’un package Java SE. Les nombres d'appels inférieurs ont des nuances plus claires, passant progressivement à des nuances plus foncées à mesure que le nombre d'appels augmente.
- Dégradé jaune-orange : Nous appliquons le dégradé jaune-orange aux méthodes d'autres bibliothèques. Les nombres d'appels inférieurs ont davantage de couleurs jaunes, passant progressivement à des couleurs plus orange à mesure que le nombre d'appels augmente.

one.newrelic.com > APM & Services > (select service) > Realtime Profiling Java > (select JVM): Vous pouvez voir les détails de chaque JVM, y compris les graphiques de flammes.