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 ….