Java Mission Control

Werbung
Java Mission Control
Die Entwicklung ist abgeschlossen. Alles ist gut getestet und
schon ist die Anwendung im Produktivbetrieb. Schön, wenn jetzt alles
stabil läuft. Und was wenn nicht? Dann heißt es möglichst schnell
mit Analyseergebnissen aufzuwarten. Was führte wann und warum
zu Abweichungen im Verhalten der Anwendung? Ohne repräsen­
tative Datenbasis und ein entsprechend aufeinander abgestimmtes
Tooling kommt man jetzt schnell ins Schwitzen. Gut zu wissen,
dass in Oracles JDK mit Java Mission Control eine geradezu perfek­
te Toolkette für solche Fälle bereits vorhanden ist.
So manch einer mag sich noch an die Zeiten vor
Vermutung, dass es in Zukunft sein Dasein wohl
gab es den WebLogic-Application Server noch
wird. Gehen wir also mit der Zeit und starten wir
der "Java-Einkaufstour" von Oracle erinnern. Da
von BEA. Der erfreute sich, nicht zuletzt ob seiner
JVM-Implementierung JRockit, einer gewissen
eher als quelloffenes Tool im OpenJDK fristen
unsere erste Mission mit Java Mission Control.
Beliebtheit. Die JRockit-VM lieferte bereits damals
Erste Schritte mit Java Mission Control
durchaus zu einer angenehmen Angelegenheit
Die Kommandozentrale von Java Mission Con­-
Analysewerkzeuge auf JVM-Ebene. Heute gehört
wen­dung daher. Im Binary-Verzeichnis des JDK
genau das, was den Betrieb von Anwendungen
machen konnte: Live-taugliche Monitoring- und
BEA, und damit auch JRockit, zu Oracle. Und
weil seit ein paar Jahren nun auch Sun und die
HotSpot-JVM zu Oracle gehören, wird seit ge­
trol kommt in Form einer Eclipse-basierten An­
tut es der Aufruf von
$JDK_HOME/bin/jmc
raumer Zeit an einer "Fusion" der unterschiedlichen JVMs gearbeitet. So kommt es, dass die
vormals unter JRockit Mission Control bekannten
Tools seit dem Update 40 auf Java Version 7 in
Form von Java Mission Control Bestandteil des
bzw.
%JDK_HOME%\bin\jmc.exe
von Oracle ausgelieferten JDKs sind.
Bevor wir die Toolkette rund um Java Mission
und die Stand-Alone-Variante steht zur Verfü-
ein Blick auf die wichtigsten Eckdaten: Mit einem
gration des Werkzeugs mittels Plugin über die
Control genauer unter die Lupe nehmen, zunächst
aktuellen JDK 1.8 erhält man Java Mission Control
in Version 5.5. Es bietet eine JMX-Console und
ein Java Flight Recorder genanntes Profiling- und
gung. Arbeitet man mit Eclipse-IDE, ist die Inte­
von Oracle zur Verfügung gestellte Update-Site
möglich.
Diagnosewerkzeug. Was aus dem bis­lang präfe-
Vorausgesetzt es laufen keine weiteren Java-Pro-
lässt sich aktuell nur mutmaßen. Java Mission
aufgelistet, in welcher das Werkzeug selbst läuft.
rierten JVM-Monitoringwerkzeug VisualVM wird,
Control gehört im Zusammenhang mit Oracles
JDK sicher die Zukunft. VisualVM liegt dem JDK
zwar noch bei, es besteht jedoch Anlass zu der
zesse, bekommen wir zunächst die JVM-Instanz
Durch Doppelklick auf den in der Baumstruktur
dargestellten MBean-Server bauen wir eine Verbindung auf und ►
Java Mission Control – Seite 1
Abbildung 1:
Oracle Java Mission Control
bekommen nun Zugriff auf die MBeans der be­
lässt sich in verschiedenen Konfigurationen betrei­
bieten Laufzeitinformationen in grafisch auf-
Zeitspanne oder aber permanent laufzeitrelevan-
treffenden JVM. Einige der angebotenen Views
bereiteter Form – alles erinnert ein bisschen an
VisualVM (siehe Abbildung 1).
Interessant sind jedoch die Möglichkeiten zum
Erstellen unterschiedlicher Trigger. Hier zeigt sich,
dass Java Mission Control sich nicht ausschließ-
lich als Entwicklungswerkzeug positionieren
möchte. Vielmehr nimmt es gerade auch den
Anwendungsbetrieb als mögliches Einsatzgebiet
für sich in Anspruch. So lassen sich beispiels­
weise E-Mails beim Erreichen definierter Grenzwerte versenden – oder aber so genannte Flight
Recordings starten. Diese basieren auf einigen er­weiterten Möglichkeiten, Laufzeitdaten der
JVM mithilfe des Java Flight Recorders aufzuzeich­
nen und sind der eigentliche Kern von Java
Mission Control. Lassen Sie uns also einen Blick
auf diesen Mechanismus werfen.
Java Flight Recorder
Mit dem Java Flight Recorder bekommt die von
Oracle ausgelieferte HotSpot-JVM gewisser­
maßen einen Flugdatenschreiber verpasst. Dieser
Seite 2
ben und zeichnet entweder für eine definierte
te Daten seiner JVM auf. Das Ziel ist hierbei
nicht die Unterstützung eines "Live-Monitorings",
welches durch die Java Management Extensions
ja hinreichend abgedeckt ist. Vielmehr geht es da­rum, alle notwendigen Daten für nachgelagerte
Laufzeitanalysen ein­zusammeln. Damit schafft
der Java Flight Recorder eine erstklassige Mög-
lichkeit, z. B. im Fall von problembehaftetem Ver­halten einer Anwendung, auf Daten zurückgrei-
fen zu können, die den Zustand des Systems zum
betreffenden Zeitpunkt präzise repräsentieren.
Zum Chanon der gesammelten Daten zählen unter
anderem Garbage Collection Statistiken, mög­-
liche Compileroptimierungen zur Laufzeit, Laten­
zen von I/O-Operationen und Locks, Heap-
Statistiken und vieles andere mehr. Durch die
interne Architektur des Flight Recoders wird
sichergestellt, dass diese doch recht umfangreiche
Datensammlung nur minimale Auswirkungen
auf die Gesamtperformance der eigentlichen An­wendung hat. Glaubt man den Aussagen des
Herstellers, liegt der Impact auf die Anwendungsperformance zwischen ein und zwei Prozent.
Die Vorteile liegen also auf der Hand – allein ►
der für den Einsatz in Produktivumgebungen
Darüber hinaus gibt es die Möglichkeit, sich über
dacht werden. Java Mission Control ist eines
zu verbinden und ein Flight-Recording via Com-
erforderliche Lizenzerwerb sollte im Vorfeld be­der von Oracle in die Hotspot-JVM inte­grierten,
kommerziellen Features. Für den Einsatz in
die dritte Möglichkeit – das Java Mission Control-
Frontend. Von hier aus können Flight-Recording-
also schon weit im Vorfeld des Produktivbe­triebs,
ausgewertet werden. Navigieren wir also zum
kann die Toolkette gute Dienste leisten. Lenken
wir unsere Aufmerksamkeit also auf diesen As­pekt und lassen Sie uns den Einsatz des Java
Start Flight Recording
mandline zu initiieren. Wir entscheiden uns für
der Anwendungsentwicklung ist allerdings kein
separater Lizenzerwerb erforderlich. Auch hier,
Abbildung 2
das JCMD-Tool zum gewünschten Java-Prozess
Flight Recorders als Profiling-Tool in der Entwicklung betrachten.
Sessions konfiguriert, gestartet und später auch
Java-Prozess unserer Anwendung und wählen aus
dem Kontextmenü den Punkt "Start Flight Re­
cording" aus. Im nun folgenden Dialog dürfen wir
noch genauer über Art und Um­fang der zu sam-
melnden Daten sowie die Dauer der Aufzeichnung
entscheiden. Fürs Erste kommen wir mit dem
bereits vor­handenen Template "Profiling on server"
über die Runden.
Die aufgezeichneten Daten werden vom Java
Flight Recorder nach Ablauf der vorgegebenen
Aufzeichnungsdauer in eine Datei gespeichert,
die wir zur Auswertung wiederum in Java Mission
Control einlesen. Die Unterstützung des Tools,
der oft recht großen Menge aufgezeichneter Daten die nötigen Erkenntnisse zu entlocken, lässt
hier­bei kaum Wünsche offen. Schön gelöst ist vor
allem die zeitliche Quantisierung. So lässt sich
der Fokus auf interessante Zeitpunkte eingrenzen
und man wird nicht von der Gesamtmenge der
Um eine Analyse mithilfe von Java Flight Recorder und Java Mission Control durchzuführen,
starten wir zunächst die Anwendung unter Angabe von zwei zusätzlichen VM-Parametern:
-XX:+UnlockCommercialFeatures
-XX:+FlightRecorder
ein­gesammelten Daten erschlagen. Ohne Probleme lassen sich so die unterschiedlichsten Frage-
stellungen im Handumdrehen beantworten: In
welchen Methoden der Anwendung verbringt
die JVM, relativ zur gesamten Ausführungsdauer,
die meiste Zeit? Ein Klick auf den Abschnitt
"Code" eines Flight Recordings (siehe Abbildung
3 auf Seite 4) und schon finden wir eine Zu­
sammenfassung aller "Hot Methods". Oder: Auf
Flight-Recordings können auf unterschiedliche
Arten gestartet werden. Zum einen lässt sich
beim Starten der JVM mit entsprechendem Parameter die Aufzeichnung konfigurieren:
welche Teile der Anwendung lassen sich Latenzen
und Lock-Contentions zurückführen? Ein Klick
auf den Abschnitt "Threads" und wir finden
auch diese Informationen in entsprechend aufberei­
teter Form. ►
-XX:StartFlightRecording=name=My-Recording,settings=default
Java Mission Control – Seite 3
Nun gilt es nur noch die rich­tigen Schlüsse im
Hinblick auf die Fehlerbesei­tigung oder Opti­
mierung der Anwendung zu zie­hen. Die Beschaf­
fung eines gesonderten Java-Profilers ist mit
der Verfügbarkeit von Java Mission Control in
vielerlei Hinsicht überflüssig geworden.
Abbildung 3:
Liste aller Hot Methods
Fazit
Das Gesamtpaket rund um Java Mission Control
macht einen erfreulich praxistauglichen Eindruck.
Der dargebotene Werkzeugkasten unterstützt in
erster Linie bei der Lösung von Problemen, die
Lernkurve ist verhältnismäßig gering. Die Jahre,
die die Toolkette seit ihrer Einführung in BEAs
Kontakt
buschmais GbR
Leipziger Straße 93
01127 Dresden
Tel 0351 3209230
Fax 0351 32092329
[email protected]
Webwww.buschmais.de
JRockit auf dem Buckel hat, haben sie ganz offen­sichtlich wie einen guten Wein reifen lassen. Wer
bislang noch nicht in die Verlegenheit gekommen
ist, einen Blick auf Java Mission Control zu wer-
fen, dem sei es nicht erst zur Analyse des nächsten
Memoryleaks aus dem Livesystem ans Herz
gelegt. Einfach mal rein­schauen – es lohnt sich.
■ Tobias Israel
Tobias Israel ist Berater bei der
buschmais GbR. Ein Schwerpunkt
seiner Arbeit liegt auf der Erstel­
lung und Umsetzung von Integrati­
onsstrategien für verteilte Unter­
nehmensanwendungen.
Copyright © 2015 buschmais GbR Alle Rechte vorbehalten. "buschmais" ist eine eingetragene Marke der buschmais GbR. Ihre Verwendung im
Geschäftsverkehr ist nur bei ausdrücklicher, schriftlicher Erlaubnis der buschmais GbR statthaft.
Seite 4
Herunterladen