JConsole verwenden
JConsole (Java™ Monitoring and Management Console) ist ein grafisches Tool, mit dem Benutzer das Verhalten von Java-Anwendungen überwachen und verwalten können.
Das Tool 'JConsole' basiert auf der API java.lang.management. JConsole stellt eine Verbindung zu Anwendungen her, die auf derselben Workstation oder auf einer fernen Workstation aktiv sind. Allerdings müssen die Anwendungen erst für den Zugriff konfiguriert werden.
Wenn JConsole eine Verbindung zu einer Java-Anwendung herstellt, werden Informationen zur Anwendung gemeldet. Dazu gehören die Speicherbelegung, die aktiven Threads und die Klassen, die geladen wurden. Anhand dieser Daten können Sie das Verhalten der Anwendung und der Java Virtual Machine (JVM) überwachen. Diese Informationen sind hilfreich für die Untersuchung von Leistungsproblemen, von Problemen mit der Speicherbelegung, von Blockierungen oder von Deadlocks.
JConsole zur Überwachung einer Java-Anwendung einrichten
- Die Java-Anwendung, die Sie überwachen möchten, muss mit Befehlszeilenoptionen gestartet werden, die JConsole von anderen Systemen oder anderen Benutzern zugänglich machen. Ohne diese Optionen kann JConsole nur zu Prozessen mit demselben Eigner auf demselben System eine Verbindung herstellen. Das folgende Beispiel zeigt die einfachste Gruppe von Überwachungsoptionen:
Der Wert für < portnummer> muss ein freier Port auf Ihrem System sein. In diesem Beispiel wird mit den Optionen authenticate und ssl die Kennwortauthentifizierung und Verschlüsselung mit SSL (Secure Sockets Layer) verhindert. Mit diesen Optionen kann JConsole oder ein anderer JMX-Agent eine Verbindung zu Ihrer Java-Anwendung herstellen, wenn sie Zugriff auf den angegebenen Port hat. Verwenden Sie diese nicht sicheren Optionen nur in einer Entwicklungs- oder Testumgebung. Weitere Informationen zur Konfiguration von Sicherheitsoptionen finden Sie unter https://docs.oracle.com/javase/8/docs/technotes/guides/jmx/overview/connectors.html.-Dcom.sun.management.jmxremote.port=<port number> -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false - Starten Sie JConsole, indem Sie jconsole in einer Befehlszeile eingeben. Der Pfad muss das Verzeichnis bin einer Java-Installation enthalten.
- Der Dialog Neue Verbindung der JConsole wird geöffnet: Geben Sie den Hostnamen und die Portnummer ein, die Sie in Schritt 1angegeben haben. Wenn Sie JConsole auf derselben Workstation wie Ihre Java-Anwendung ausführen, übernehmen Sie für den Hostnamen den Wert localhost. Bei einem fernen System muss im Hostfeld der Hostname oder die IP-Adresse der Workstation angegeben werden. Lassen Sie die Felder Benutzername und Kennwort leer, wenn Sie die in Schritt 1angegebenen Optionen verwendet haben.
- Klicken Sie Auf verbinden. JConsole wird gestartet und zeigt die Registerkarte Zusammenfassung an.
JConsole für die Eigenüberwachung konfigurieren
- Starten Sie JConsole, indem Sie jconsole in einer Befehlszeile eingeben. Der Pfad muss das Verzeichnis bin des SDK enthalten.
- Der JConsole-Dialog New Connection (Neue Verbindung) wird geöffnet. Geben Sie localhost:0 in das Feld Remote Process (Ferner Prozess) ein.
- Klicken Sie Auf verbinden. JConsole wird gestartet und die Registerkarte mit der Zusammenfassung wird angezeigt.
JConsole zum Überwachen einer Java-Anwendung verwenden
Auf der Registerkarte Zusammenfassung der JConsole werden Schlüsseldetails zur verbundenen JVM angezeigt. Hier können Sie die anderen Registerkarten auswählen, die weitere Informationen zu bestimmten Aspekten enthalten. Auf der Registerkarte Memory (Hauptspeicher) wird ein Protokoll zur Belegung der einzelnen Hauptspeicherpools in der JVM angezeigt; am hilfreichsten ist hier die Belegung des Heapspeichers.
Sie können auch eine Garbage-Collection starten, indem Sie auf Perform GC (Garbage-Collection ausführen) klicken. Sie müssen entweder wie oben beschrieben eine Verbindung mit deaktivierten Sicherheitsoptionen hergestellt oder sich als Benutzer mit Kontrollberechtigungen authentifiziert haben.
Auf der Registerkarte Threads werden die Anzahl der zurzeit aktiven Threads sowie eine Liste mit den IDs dieser Threads angezeigt.
Bei Klicken auf eine Thread-ID werden Threadstatus sowie der aktuelle Stack-Trace angezeigt.
Auf der Registerkarte Classes (Klassen) werden die Anzahl der aktuell geladenen Klassen sowie die Anzahl der seit dem Start der Anwendung geladenen und entladenen Klassen angezeigt. Bei Auswahl des Kontrollkästchens verbose output (Ausführliche Ausgabe) kann die ausführliche Ausgabe zum Klassenladeprozess aktiviert bzw. inaktiviert werden, um eine Liste der Klassen anzuzeigen, die in die Client-JVM geladen werden. Die Ausgabe wird in der Ausgabe stderr der Client-JVM angezeigt.
Auf der Registerkarte MBeans können Sie den Status der Plattform-MBeans überprüfen und so weitere Informationen zur JVM erhalten. Weitere Informationen zu MBeans und J9 MXBean-Erweiterungen finden Sie im Abschnitt Language management interface der Dokumentation zu Eclipse OpenJ9 .
Schließlich enthält die Registerkarte VM Informationen zur Umgebung, in der Ihre Java-Anwendung ausgeführt wird, einschließlich aller JVM-Argumente und des aktuellen Klassenpfads.
Fehlerbehebung für JConsole
JConsole ist eine Swing-Anwendung. Die Ausführung von JConsole auf derselben Workstation wie die zu überwachende Java-Anwendung wirkt sich auf die Leistung Ihrer Java-Anwendung aus. Sie können mit JConsole eine Verbindung zu einer JVM herstellen, die auf einer fernen Workstation aktiv ist, um die Auswirkungen auf die Anwendungsleistung zu reduzieren.
Da JConsole eine Java-Anwendung ist, können Sie ihr Java-Befehlszeilenoptionen über die Anwendung übergeben, die JConsole startet, indem Sie ihnen das Präfix –Jvoranstellen. Fügen Sie beispielsweise die Befehlszeilenoption -J-Xmx< Größe>hinzu, um die maximale Größe des Heapspeichers zu ändern, die von JConsole verwendet wird.
JConsole verwendet die Attach-API zum Herstellen einer Verbindung zu einer Anwendung. Verbindungen können nur zu anderen Instanzen von J9 Virtual Machine hergestellt werden. Wenn Sie Probleme bei der Verwendung von JConsole für die Überwachung einer fernen Anwendung feststellen, kann die eigentliche Ursache die Attach-API sein. Informationen zum Diagnostizieren von Problemen finden Sie unter Java Attach API.
Bekannte Einschränkungen
- Verwendung der lokalen Prozessliste
- Die lokale Prozessliste kann nicht verwendet werden. Verwenden Sie localhost:<port> im Texteingabefeld Fernverarbeitung , um eine Verbindung zu einer lokalen Java Virtual Machine herzustellen.
- CPU-Belastung auf der Registerkarte Overview (Übersicht)
- Die Anzeige der CPU-Belastung funktioniert nicht.
Weitere Informationen
Weitere Details zu JConsole und den Definitionen der angezeigten Werte finden Sie unter https://docs.oracle.com/javase/8/docs/technotes/guides/management/index.html in der Oracle -Dokumentation.