Deine Java-Anwendung im Detail: Performance-Analyse mit JMX und JDK Mission Control
Autor
Marcus HeldWenn es darum geht, die Performance oder das Verhalten einer Java-Anwendung zu analysieren, ist Java Management Extensions (JMX) ein wertvolles Tool. In diesem Artikel werden wir uns ansehen, wie du JMX nutzen kannst, um deine Anwendung zu profilen und dabei insbesondere JDK Mission Control (JMC) verwenden.
JMX: Ein kurzer Einblick
JMX bietet eine einfache und standardisierte Methode, um Java-Anwendungen zu überwachen und zu verwalten. Mit JMX kannst du auf verschiedene Metriken und Informationen über deine JVM zugreifen und sogar Echtzeit-Einstellungen anpassen.
Du kannst mit JMX einen schnellen Einblick in folgende Metriken und Daten bekommen:
1. Speicherverbrauch
Mit JMX und JMC kannst du leicht erkennen, wie viel Speicher von deiner Anwendung zu einem bestimmten Zeitpunkt verwendet wird.
- Heap-Speicher: Wie viel vom zugewiesenen Heap-Speicher wird aktuell verwendet?
- Non-Heap-Speicher: Welcher Teil des Nicht-Heap-Speichers ist in Gebrauch, z.B. der Bereich für die Klassenmetadaten.
2. Thread-Informationen
Analysiere, wie Threads in deiner Anwendung arbeiten und identifiziere mögliche Engpässe.
- Anzahl der aktiven Threads: Wie viele Threads sind aktuell in deiner JVM aktiv?
- Thread-Blockierung: Welche Threads sind blockiert und warten auf den Zugriff auf eine Ressource?
3. JVM-Performance
Verstehe, wie gut deine JVM arbeitet.
- Just-in-Time-Kompilierung: Wie oft wird der JIT-Compiler aktiv und wie beeinflusst das die Performance?
- Garbage Collection: Wie oft tritt sie auf, wie lange dauert sie, und welchen Einfluss hat sie auf die Anwendungsperformance?
4. Klassenlade-Statistiken
Finde heraus, wie Klassen in deiner JVM geladen und entladen werden.
- Anzahl geladener Klassen: Wie viele Java-Klassen wurden bis jetzt geladen?
- Anzahl entladener Klassen: Wie viele Klassen wurden bis jetzt entladen?
5. MBean-Attribute und Operationen
MBeans bieten eine Vielzahl von Attributen und Operationen, die Informationen über verschiedene Aspekte der JVM und der Anwendung liefern.
- Beispiel: Ein Datenbank-MBean könnte Informationen über die Anzahl der aktiven Verbindungen, die durchschnittliche Abfragezeit oder die Anzahl der fehlgeschlagenen Verbindungsversuche bereitstellen.
Installation von JDK Mission Control (JMC)
Um, die JMX Schnittstellen abzurufen und zu visualisieren brauchen wir ein passendes Tool. Oracle stellt dafür JDK Mission Control kostenlos zur Verfügung.
- Download: Lade JMC von der offiziellen Oracle-Website herunter.
- Installation: Führe das heruntergeladene Installationsprogramm aus. Dieser Prozess ist ziemlich einfach und selbsterklärend.
- Starten von JMC: Nach der Installation findest du Java Mission Control in deinem Programmverzeichnis. Starte es einfach.
Verbindung von JMC mit deiner Anwendung
Nachdem JMC installiert ist, wollen wir es mit unserer Java-Anwendung verbinden.
JVM-Parameter für JMX
Bevor wir JMC verwenden können, müssen wir sicherstellen, dass unsere JVM mit den richtigen Parametern gestartet wird:
java -Dcom.sun.management.jmxremote \
-Dcom.sun.management.jmxremote.port=YOUR_PORT \
-Dcom.sun.management.jmxremote.authenticate=false \
-Dcom.sun.management.jmxremote.ssl=false \
-jar your-app.jar
Betrachten wir jeden dieser Parameter genauer betrachten:
-Dcom.sun.management.jmxremote
: Aktiviert die JMX-Überwachung.-Dcom.sun.management.jmxremote.port=YOUR_PORT
: Gibt den Port an, auf dem JMX lauschen soll. ErsetzeYOUR_PORT
durch einen gewünschten Port.-Dcom.sun.management.jmxremote.authenticate=false
: Deaktiviert die Authentifizierung. In einer Produktionsumgebung würdest du Authentifizierung aktivieren wollen.-Dcom.sun.management.jmxremote.ssl=false
: Deaktiviert SSL. In einer Produktionsumgebung solltest du SSL aktivieren.
Verbindung herstellen
- Öffne JMC und gehe zum “Flight Recorder”.
- Klicke auf “Neue Verbindung” und gib die Details deines JMX-Servers ein (Host und Port).
- Wenn alles korrekt konfiguriert ist, solltest du jetzt eine Verbindung herstellen können.
Beginne mit dem Profiling!
Jetzt, wo JMC mit deiner Anwendung verbunden ist, kannst du den “Flight Recorder” starten und detaillierte Daten über die Performance und das Verhalten deiner Anwendung sammeln.
Schau dich um!
JMX, in Kombination mit Java Mission Control, bietet eine mächtige Möglichkeit, das Innenleben deiner Java-Anwendungen zu verstehen. Die Fähigkeit, in Echtzeit zu überwachen und zu analysieren, kann von unschätzbarem Wert sein, um Engpässe zu identifizieren und Optimierungen vorzunehmen. Frohes Profiling!