Überprüfen Sie den Status der Java-Anwendung, ohne das Überwachungstool zu verwenden

Überblick

jstack ist ein Befehl, der mit dem JDK geliefert wird. Wenn auf einem Computer Java ausgeführt wird, können Sie den Prozessstatus problemlos abrufen, ohne ein spezielles Überwachungstool installieren zu müssen.

Dieses Tool zeigt einen Thread-Dump in der Befehlszeilenkonsole an. Sie können es verwenden, wenn Sie die Java-PID kennen. Mit diesem Tool können Sie den Thread-Status abrufen und untersuchen, wenn die Leistung nicht gut ist oder wenn ein Phänomen wie Dead Lock auftritt.

Usage

$ jstack -l <pid>

Sie können die Stapelverfolgung für jeden Thread im Ausgabeergebnis überprüfen.

"Thread-0" #12 prio=5 os_prio=0 cpu=0.00ms elapsed=496.25s tid=0x00007f6a741f1800 nid=0x1a5 waiting on condition  [0x00007f6a17a9f000]
   java.lang.Thread.State: TIMED_WAITING (sleeping)
        at java.lang.Thread.sleep([email protected]/Native Method)
        at Server.sleepForever(Server.java:20)
        at Server.lambda$0(Server.java:9)
        at Server$$Lambda$1/0x0000000840060840.run(Unknown Source)
        at java.lang.Thread.run([email protected]/Thread.java:834)

"Thread-1" #13 prio=5 os_prio=0 cpu=0.00ms elapsed=496.25s tid=0x00007f6a741f3800 nid=0x1a6 waiting on condition  [0x00007f6a1798f000]
   java.lang.Thread.State: TIMED_WAITING (sleeping)
        at java.lang.Thread.sleep([email protected]/Native Method)
        at Server.sleepForever(Server.java:20)
        at Server.lambda$0(Server.java:9)
        at Server$$Lambda$1/0x0000000840060840.run(Unknown Source)
        at java.lang.Thread.run([email protected]/Thread.java:834)

"Thread-2" #14 prio=5 os_prio=0 cpu=0.00ms elapsed=496.25s tid=0x00007f6a741f5000 nid=0x1a7 waiting on condition  [0x00007f6a1787f000]
   java.lang.Thread.State: TIMED_WAITING (sleeping)
        at java.lang.Thread.sleep([email protected]/Native Method)
        at Server.sleepForever(Server.java:20)
        at Server.lambda$0(Server.java:9)
        at Server$$Lambda$1/0x0000000840060840.run(Unknown Source)
        at java.lang.Thread.run([email protected]/Thread.java:834)

Wenn beispielsweise Java in mehreren Threads ausgeführt wird und ein Phänomen wie ein Thread auftritt, der viel CPU-Auslastung oder Arbeitsspeicher verbraucht, kann dies wie folgt angegeben werden.

(1) Identifizieren Sie den Prozess, der Ressourcen aus dem Prozess verbraucht.

$ top -H -b -n 1 -p ${Java Pid}

Rufen Sie die ressourcenintensive PID mit dem obigen Befehl ab

(2) Konvertieren Sie die PID in hexadezimal und grep aus dem Ergebnis von jstack ③ Da der Trace, der mit der NID- und Hexadezimalzahl übereinstimmt, ein ressourcenintensiver Prozess ist, folgen Sie von dort aus.

Es ist möglich, in einem solchen Fluss zu untersuchen.

Recommended Posts

Überprüfen Sie den Status der Java-Anwendung, ohne das Überwachungstool zu verwenden
Statusüberwachung von Java-Apps mit Elasticsearch
Überprüfen Sie den Status der Ratenbegrenzungsanwendung für Docker Pull
Befehl zum Überprüfen der Anzahl und des Status von Java-Threads
Überprüfen Sie den Migrationsstatus von Schienen
Überprüfen Sie den Inhalt des Java-Zertifikatspeichers
[Java] Überprüfen Sie die Anzahl der Zeichen
Java 9+ Anwendungsstatus
[Java] Überprüfen Sie die JDK-Version der erstellten Kriegsdatei
Überprüfen Sie das Verhalten von Java Intrinsic Locks mit bpftrace
Überprüfen Sie die Funktion von zwei Rollen mit einer Chat-Anwendung
[Java] Versuchen Sie, die Elemente der Json-Zeichenfolge mithilfe der Bibliothek zu bearbeiten
Die Geschichte, Java mithilfe der BitBucket-Pipeline nach Heroku zu bringen
Ich habe versucht, die Cache-Funktion des Application Container Cloud Service zu verwenden
Versuchen Sie es mit der Zweipunktmessfunktion von Firebase Performance Monitoring. [Android]
Lassen Sie uns eine TODO-App in Java 5 erstellen. Schalten Sie die Anzeige von TODO um
So überprüfen Sie den Inhalt der Java-Zeichenfolge mit fester Länge
Ist die von Ihnen verwendete Version von Elasticsearch mit Java 11 kompatibel?
[Java] Löschen Sie die Elemente von List
[Schienen] Überprüfen Sie den Inhalt des Objekts
[Java Edition] Geschichte der Serialisierung
Überprüfen Sie die Version von Cent OS
Java-Vergleich mit der compareTo () -Methode
Umgang mit Zeitzonen mit Java
Zusammenfassung der objektorientierten Programmierung mit Java
Der Ursprung von Java-Lambda-Ausdrücken
Ich habe versucht, Google HttpClient von Java zu verwenden
Analysieren und objektivieren Sie JSON mithilfe der Annotation @JsonProperty von Jackson, einer Java-Bibliothek
[Java] Wie man mit der String-Klasse an die Spitze eines bestimmten Strings kommt
Überprüfen Sie den MX-Eintrag der E-Mail-Adresse mit Java und die Domain
[Java] Überprüfen Sie, ob die Zeichenfolge nur aus Leerzeichen besteht (= Leerzeichen)
Zeigen Sie den japanischen Kalender und Tag mit der Java8-Standardklasse an
Überprüfen Sie das Flag nach Ablauf einer bestimmten Zeitspanne, seit der Thread ohne Verwendung des Timer-Threads ausgeführt wurde.
[Java] Express-Aufzählungstyp ohne Verwendung des Aufzählungstyps (Aufzählung)
Versuchen Sie es mit dem Java Framework Nablarch [Web Application]
Überprüfen Sie den Betrieb mit dem Steg mit Maven.
Holen Sie sich das Ergebnis von POST in Java
Versuchen Sie, || anstelle des ternären Operators zu verwenden
Überprüfen Sie den Inhalt der Parameter mit pry
Untersuchen Sie die Speichernutzung von Java-Elementen
[Java] Ermittelt den Tag eines bestimmten Tages
Newcomer-Training mit der Web-Basic-Programmierung mit Java-
Map ohne Verwendung eines Arrays in Java
ERRORCODE = -4471 tritt in einer Java-Anwendung auf, die Db2 verwendet.
Vergleichen Sie Elemente eines Arrays (Java)
[Tag: 5] Ich habe die Grundlagen von Java zusammengefasst
Was sind die aktualisierten Funktionen von Java 13
Messen Sie einfach die Größe von Java-Objekten
Rückblick auf die Grundlagen von Java
Ausgabe des Buches "Einführung in Java"
Speichermessung von Java-Apps unter Windows
Erfassung von Eingabeinhalten mit Scanner (Java)
Die Geschichte des Schreibens von Java in Emacs
Überprüfen Sie die Version der Standard-Web-Software.
[Java] [Spring] Testen Sie das Verhalten des Loggers
Rolle von JSP in Webanwendungen [Java]
Versuchen Sie es mit der Wii-Fernbedienung in Java
Überprüfen Sie die Funktion der Schnittstelle über den Thread