Formation nouveautés JCMS 9

Transcription

Formation nouveautés JCMS 9
Présentation
de
Java Misson Control
Sommaire
Présentation de Java Mission Control (JMC)
Présentation de Java Flight Recorder (JFR)
Mise en place de JMC et de JFR
Démonstration
Présentation de Java Mission Control
JMC :
• Est né de la convergence des JVM Sun Hotspot et Bea JRockit.
–
Pour JRockit => JRockit Mission Control 4.1
Pour Hotspot => Java Mission Control 5.2
• Fourni avec la JVM à partir de la version du JDK 7u40
–
• Propose des outils de profiling et de diagnostics
• Très peu gourmand en ressources (~2% d'overhead)
–
Meilleure implémentation
Accès aux informations d’exécution
• Free for development use (Oracle Binary Code License) ???
–
• Supporte les plugins
• OS : Windows, Linux, Solaris, MacOSX
Présentation de Java Mission Control
JCM fourni deux outils principaux :
•
Management Console (Java Process Browser et JMX Console)
–
Utilise le mécanisme Java Discovery Protocol (JDP). (Broadcast sur le réseau)
–
Permet les connexions locales et a distances des applications en cours d’exécutions
–
Possibilité de monitorer différents JDK d'Oracle via les interfaces JMX
–
Une console JMX repensé avec la possibilité d'avoir du temps réel ou des instantanés des
éléments suivants par exemple :
●
Garbage Collector
●
Utilisation de la mémoire
●
Utilisation du CPU
●
Les attributs disponibles via Mbeans
La possibilité de mettre en place des triggers avec des actions
Flight Recorder
●
•
Présentation de Java Mission Control
Présentation de Java Flight Recorder
• Toute la mécanique d’événement et de profilage est directement intégré dans la JVM,
JFR, ne fait qu'enregistrer les données dans un fichier
• JFR a directement accès aux informations de bas niveau de la JVM, cela a pour effet de
minimiser l'impact du monitoring sur les performances
• JFR permet de toujours mettre les environnements de production sous profilage
• JFR est comme la boite noir des avions, tout y est consigné dans un format binaire
• Au démarrage JFR enregistre les données dans un TLAB (Thread Local Allocation
Buffers), cela à pour effet d'améliorer le débit d'enregistrement. ( pas de synchronisation)
• Une fois le TLAB rempli, les données sont transférées dans un buffer global
(synchronisation nécessaire)
• Ensuite quand le buffer global est rempli, les données sont écrites sur le disque
Présentation de Java Flight Recorder
•
Le plugin JFR inclut dans JMC permet d'analyser en profondeur toutes les données
collectées
•
Permet d'analyser tous les aspects d'une l'application (analyse du code, de la
mémoire, des threads, I/O etc ... )
•
Il existe plusieurs type enregistrement d’événement dans JFR
–
Instant – Une seule fois
–
Requestable – Avec une période configurable par l'utilisateur
–
Duration – Avec un temps de début et de fin
–
Timed – Période avec un seuil configurable par l'utilisateur
Présentation de Java Flight Recorder
Mise en place de JMC et de JFR
•
Ajout des propriétés JMX pour l’accès à distance
–
-Dcom.sun.management.jmxremote.port=3339
–
-Dcom.sun.management.jmxremote.authenticate=false
•
-Dcom.sun.management.jmxremote.ssl=false
On peut ajouter ce paramètre pour spécifier le hostname
•
-Djava.rmi.server.hostname=<Ip du serveur>
Pour forcer l'IPV4
•
-Djava.net.preferIPv4Stack=true
Puis l'ajout des paramètres RMI pour JMC
•
-Dcom.sun.management.jmxremote.rmi.port=3339 , Le port est le même que
com.sun.management.jmxremote.port , Il est recommandé d'utiliser le même port pour des raisons de
tunneling.
SI on souhaite utiliser JDP, Les deux paramètres suivants permettent de broadcaster sur le réseau votre agent JMC
–
–
–
–
avec le nom désiré (croisés les doigts pour ne pas avoir de proxy, firewall sur votre réseau lol):
–
-Dcom.sun.management.jmxremote.autodiscovery=true
–
-Dcom.sun.management.jdp.name=leader-l1
Mise en place de JMC et de JFR
•
Il faut déclarer les options suivantes qui servent à activer JMC au niveau de notre JVM :
•
-XX:+UnlockCommercialFeatures -XX:+FlightRecorder
Redémarrer votre Tomcat et vous êtes maintenant prêt pour faire du profiling en production.
•
Pour lancer du un enregistrement directement depuis les options de la JVM on peut utiliser les options
suivantes par exemple : XX:StartFlightRecording=delay=20s,duration=60s,name=Test,filename=d.jfr,settings=profile
•
Utiliser l'option suivante pour changer le niveau de log
•
-XX:FlightRecorderOptions=loglevel=info
L'ajout de d’enregistrement peut se faire également en ligne de commande via “jcmd”
–
Démonstration
Présentation des interfaces
Ajout de JFR en ligne de commande
Ajout de JFR via interface
Etc ….