Loading...

Deine Java-Anwendung im Detail: Performance-Analyse mit JMX und JDK Mission Control

Performance
20. September 2023
3 Minuten Lesezeit
Beitrag teilen:
Gefällt dir der Beitrag?
Du wirst den Newsletter lieben!

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

  1. Download: Lade JMC von der offiziellen Oracle-Website herunter.
  2. Installation: Führe das heruntergeladene Installationsprogramm aus. Dieser Prozess ist ziemlich einfach und selbsterklärend.
  3. 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. Ersetze YOUR_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

  1. Öffne JMC und gehe zum “Flight Recorder”.
  2. Klicke auf “Neue Verbindung” und gib die Details deines JMX-Servers ein (Host und Port).
  3. Wenn alles korrekt konfiguriert ist, solltest du jetzt eine Verbindung herstellen können.

Wie du die Verbindung mithilfe von JMX in JMC aufbaust

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.

Java Flight Recorder in Action

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!

Kennst du schon Marcus' Backend Newsletter?

Neue Ideen. 2x pro Woche!
Top