Weblogic et JRockit Mission Control

JRockit Mission Control permet de diagnostiquer les dysfonctionnements qui apparaissent dans la machine virtuelle d’Oracle. Il est particulièrement bien intégrée à WebLogic. Il inclut une console temps réel mais également des outils tels que l’analyseur des fichiers générés par le l’enregistreur de vol (Flight Recorder) et le détecteur de fuites mémoire (Memory Leak Detector).

Avec JRockit Mission Control, vous pouvez facilement faire le lien entre des temps de réponses, une sur-utilisation des processeurs ou de la mémoire et les composants des applications Java EE, les URL ou le contexte d’exécution (ECID). Voici un exemple de vue extraites d’un enregistrement temps réel de Weblogic :

Cet article discute de différents aspects liés à l’utilisation de JRockit Mission Control avec Weblogic et notamment les contraintes de licences et le paramétrage pour sa mise en oeuvre dans des environnements gérés ou non.

Impact de JRockit Mission Control

La première question qui vient à l’esprit, avant même de savoir ce qu’on peut faire avec JRockit Mission Control, est l’impact de la solution sur l’exécution de vos programmes Java avec ou sans Weblogic. Pour répondre à cette question, voici quelques idées clés :

  • Mission Control est en fait une console (ou plateforme) graphique. Elle est disponible directement depuis le répertoire bin de votre installation de JRockit R28 ou sous la forme d’un package séparé jusqu’à la version R27. Vous utiliserez Mission Control en mode Rich Client Platform à l’aide de la commande jrmc. Mission Control n’impacte donc pas directement vos JVM JRockit auxquelles il se connecte. Ce sont les outils internes de la JVM qui peuvent impacter cette exécution et notamment les extensions JMX de la JVM, JRockit Flight Recorder et Memleak Detector.
  • Vous pouvez également utiliser Mission Control sous la forme d’une plugin Eclipse dont la procédure d’installation est décrite sur cette page. Cette dernière option permet, si vous avez accès au code source de naviguer simplement jusqu’à lui à l’aide de la fonctionnalité Jump-to-Source.
  • JRockit Flight Recorder est l’outil le plus détaillé qui permet de tracer exactement tout ce que font vos machines virtuelles JRockit. Il est conçu pour être extrêmement efficace, les données associées sont stockés dans des fichiers binaires et le tout impacte d’après la documentation votre JVM pour moins de 1%.
  • Il est possible d’activer le Flight Recorder automatiquement au lancement de JRockit dans un fichier circulaire à l’aide de l’option -XX:FlightRecorderOptions=defaultrecording=true. Il est également possible d’activer Flight Recorder à la demande depuis Mission Control par exemple ou à l’aide de la commande jrcmd start_flightrecording.
  • Weblogic Diagnostic Framework (WLDF) pilote JRockit Flight Recorder à moins de désactiver explicitement ce dernier au niveau de la JVM à l’aide de l’option -XX:-FlightRecorder. Si vous changez le niveau de collecte et à moins d’avoir explicitement désactivé cette fonctionnalité, un fichier .jfr est généré dans le répertoire logs/diagnostic_images qui contient les données du Flight Recorder et peut être visualisé à l’aide de Mission Control. Pour toutes les informations utiles, regardez « Oracle® Fusion Middleware Performance and Tuning for Oracle WebLogic Server – 6 Tuning WebLogic Diagnostic Framework and JRockit Flight Recorder Integration« .

Vous noterez enfin que l’utilisation de Mission Control est facilitée par le fait qu’à partir de JRockit 27, si vous utilisez Java SE 5.0 ou supérieure, vous pourrez vous connecter à votre JVM locale sans aucun paramétrage. Cela permet notamment de visualiser l’utilisation d’un environnement en production sans aucun paramétrage à priori ; voilà ce qu’affiche Mission Control lancé sur un serveur non paramétré; vous pouvez lancer directement une session d’enregistrement :

Licences et JRockit Mission Control

Contrairement à JRockit, JRockit Mission Control est, la plupart du temps soumis à une licence payante. Dans cette section, vous trouverez les liens pour vous aider à comprendre les licences nécessaires :

Paramètrage pour un accès distant via JDP

Comme vous l’avez compris, si vous lancez Mission Control sur votre serveur, celui-ci accèdera à la JVM sans autre paramétrage. Il est également possible de configurer vos JVM pour un accès distant via JRockit Discovery Protocol (JDP) qui broadcast sur le réseau les informations de connexion à la JVM. Pour cela, il suffit de positionner les options telles que celles ci-dessous dans la ligne de commande de démarrage de votre JVM :

-Xmanagement:ssl=false,authenticate=true,autodiscovery=true,port=7090

Par défaut, le port de broadcast est le 7095. Il ne faut pas le confondre avec le port de gestion (ici 7090) sur lequel on contactera la JVM à distance; Dans le cas où vous utilisez une authentification, vous créerez un fichier jmxremote.password dans le répertoire jre/lib/management de votre JRE qui contient les nom des roles (utilisateurs) et le mot de passe correspondant; voici comment effectuer cette configuration :

$ pwd
/opt/jrockit_160_24_D1.1.2-4/jre/lib/management
$ cat jmx remote.passwordcontrolRole welcome1
monitorRole welcome1
$ ls -ltra jmxremote.password
-r-------- 1 oracle oinstall 42 Jul 30 11:52 jmxremote.password

Dans le cas où vous utilisez Weblogic démarré manuellement, il suffit ensuite d’ajouter l’option -Xmanagement[...] dans la variable JAVA_OPTIONS du fichier SetDomainEnv.sh inclus dans le domaine. Redémarrez ensuite Weblogic. Pour paramétrer JRockit Mission Control, il suffit d’ouvrir le menu « Window > Preferences > JDP Preferences » comme ci-dessous :

Le serveur apparaît automatiquement dans Mission Control; vous pouvez modifiez les propriétés de connexion au serveur à partir du menu contextuel comme ci-dessous :

 Vous visualiserez l’utilisation de la JVM à distance comme ci-dessous :

Weblogic Managed Server et JDP

Dans le cas ou vous utilisez Weblogic via les « Managed Nodes », vous pouvez directement positionnez l’option de la JVM depuis le menu « Servers > Configuration > Server Start » de la console :

Attention:
Ces paramètres ne sont pas pris en compte en cas de démarrage manuel de Weblogic.

Enfin, vous pouvez utiliser WLDF pour activer JRockit Flight Recorder en modifiant le niveau de collecte ; une fois l’opération réalisée, vous pourrez génerer une capture d’image qui genère un fichier .zip dans logs/diagnostic_images. Le fichier .jfr contenu dans ce .zip, comme le fichier .jfr collecté en permanence peuvent être visualisés à l’aide de JRockit Mission Control sur le serveur ou sur un poste client :