kill -3 um Java-Thread-Dump zu erhalten

Lesezeit: 4 Minuten

kill 3 um Java Thread Dump zu erhalten
javanerd

ich benutze kill -3 Befehl, um den Thread-Dump der JVM in Unix anzuzeigen. Aber wo finde ich die Ausgabe davon kill Befehl? Ich bin verloren!!

  • Welchen Prozess töten Sie? Ist es ein J2EE-App-Server? Wenn dies der Fall ist, sollten Sie den Stack-Trace im Standardout finden.

    – Luciano Fiandesio

    2. Februar ’11 um 15:31


  • Ich beende einen Prozess, der die Java-Klasse ausführt

    – javanerd

    2. Februar ’11 um 15:36

  • Sollte das nicht den Thread-Dump auf die Konsole schreiben. da die Java-Klasse Konsole als std out hat

    – javanerd

    2. Februar ’11 um 17:49

Sie können alternativ jstack (im Lieferumfang von JDK enthalten) verwenden, um einen Thread-Dump zu erstellen und die Ausgabe an eine beliebige Stelle zu schreiben. Ist das in einer Unix-Umgebung nicht verfügbar?

jstack PID > outfile

  • Ja – zum Zeitpunkt der Ausführung. Sie können auch -l (Kleinbuchstabe L) für eine lange Liste angeben, die zusätzliche Sperrinformationen ausgibt

    – Joshua McKinnon

    2. Februar ’11 um 18:44

  • Bis der jstack-Befehl aufgrund von “Der Threadtyp kann nicht aus der Adresse abgeleitet werden” fehlschlägt ;-(

    – noahlz

    4. November ’13 um 18:54


  • Wenn Sie diesen Fehler sehen, schlage ich vor, ihn mit Ihrem Anbieter zu besprechen. Eine schnelle Suche zeigt zum Beispiel, dass es in RHEL einen offenen Fehler bezüglich dieses Fehlers gibt und openjdk…

    – Joshua McKinnon

    4. November ’13 um 19:46

  • Es ist erwähnenswert, dass jstack das JDK erfordert. Wenn Sie Apps auf einem Server ausführen, auf dem nur die JRE installiert ist, müssen Sie ein anderes Verfahren für das Thread-Dumping finden.

    – jeffkempf

    27. November ’17 um 15:30 Uhr

  • So verwenden Sie jstack, um einen Thread-Dump eines Prozesses zu erhalten, der unter einem anderen Benutzer wie dem Windows-Dienst ausgeführt wird: stackoverflow.com/questions/1197912/…

    – Vadzim

    11. Dezember ’17 um 11:42

1642000852 328 kill 3 um Java Thread Dump zu erhalten
Kris Babic

Der Thread-Dump wird aus der VM heraus auf das System geschrieben, auf der Sie das ausgeführt haben kill -3. Wenn Sie die Konsolenausgabe der JVM in eine Datei umleiten, befindet sich der Thread-Dump in dieser Datei. Wenn die JVM in einer geöffneten Konsole ausgeführt wird, wird der Thread-Dump in ihrer Konsole angezeigt.

  • Es gibt eine Möglichkeit, die Ausgabe von JVM-Thread-Dumps in eine separate Datei umzuleiten. Siehe in meiner Antwort.

    – Vadzim

    17. Januar ’13 bei 6:31

Es gibt eine Möglichkeit, die JVM-Thread-Dump-Ausgabe beim Break-Signal in eine separate Datei umzuleiten mit LogVMOutput-Diagnoseoption:

-XX:+UnlockDiagnosticVMOptions -XX:+LogVMOutput -XX:LogFile=jvm.log

  • Technisch wird die Thread-Dump-Ausgabe dadurch nicht “umgeleitet”. Es aktiviert die JVM-Protokollierung in jvm.log (die die Thread-Dump-Ausgabe enthält), aber kill -QUIT wird immer noch (auch) auf die stdout des Prozesses speichern. Upvoted für die Beschreibung obskurer JVM-Optionen 🙂

    – Quadratwoche

    24. Februar ’14 um 10:12


An derselben Stelle, an der sich die stdout-Datei der JVM befindet. Wenn Sie einen Tomcat-Server haben, ist dies der catalina_(date).out Datei.

  • bedauerlicherweise jcmd kann keine Verbindung zum Windows-Dienstprozess herstellen mit com.sun.tools.attach.AttachNotSupportedException: Insufficient memory or insufficient privileges to attach während jstack -F erfolgreich: stackoverflow.com/questions/1197912/…

    – Vadzim

    11. Dezember ’17 um 11:41

  • Sie müssen jcmd Thread.dump unter demselben Benutzer ausführen wie der Java-Prozess, sonst werden Ihre Verbindungen abgebrochen. Siehe stackoverflow.com/questions/25438983/…

    – Dämmerung

    21. Mai ’19 um 10:32

1642000852 141 kill 3 um Java Thread Dump zu erhalten
Apoorve

Bei Verwendung von kill -3 sollte der Thread-Dump in der Standardausgabe angezeigt werden. Die meisten Anwendungsserver schreiben die Standardausgabe in eine separate Datei. Sie sollten es dort finden, wenn Sie kill -3 verwenden. Es gibt mehrere Möglichkeiten, Thread-Dumps zu erhalten:

  • kill -3 <PID>: Ausgabe auf Standardausgabe.
  • Wenn man Zugriff auf das Konsolenfenster hat, in dem der Server läuft, kann man Strg+Brechen Tastenkombination zum Generieren des Stack-Trace auf STDOUT.
  • Für Hotspot-VMs können wir auch verwenden jstack Befehl zum Generieren eines Thread-Dumps. Es ist ein Teil des JDK. Syntax ist wie folgt:

    Usage:
    
    jstack [-l] <pid> (to connect to running process)
    jstack -F [-m] [-l] <pid>(to connect to a hung process)
    
     - For JRockit JVM we can use JRCMD command which comes with JDK Syntax: 
       jrcmd <jrockit pid> [<command> [<arguments>]] [-l] [-f file] [-p] -h]
    

  • Ich habe Probleme mit Kill -3 . Es funktioniert in Ordnung, beendet aber den Prozess auch nach dem Schreiben des Thread-Dumps in die Konsole. Soll es das tun?

    – Ashley

    9. Mai ’18 um 15:44 Uhr

  • @Ashley – nein kill -3 <PID> sollte die JVM nicht töten. Welche Art von Java-App suchen Sie?

    – slm

    8. November ’19 um 0:12

kill 3 um Java Thread Dump zu erhalten
anish

In Jboss können Sie Folgendes ausführen

nohup $JBOSS_HOME/bin/run.sh -c  yourinstancename $JBOSS_OPTS >> console-$(date +%Y%m%d).out  2>&1 < /dev/null &
kill -3 <java_pid>

Dadurch wird Ihre Ausgabe/Threadump an die im obigen Befehl angegebene Dateikonsole umgeleitet.

  • Ich habe Probleme mit Kill -3 . Es funktioniert in Ordnung, beendet aber den Prozess auch nach dem Schreiben des Thread-Dumps in die Konsole. Soll es das tun?

    – Ashley

    9. Mai ’18 um 15:44 Uhr

  • @Ashley – nein kill -3 <PID> sollte die JVM nicht töten. Welche Art von Java-App suchen Sie?

    – slm

    8. November ’19 um 0:12

1642000852 66 kill 3 um Java Thread Dump zu erhalten
Mehmet Erdemsoy

  1. Finden Sie die Prozess-ID [PS ID]
  2. jcmd ausführen [PS ID] Thread.print

.

458230cookie-checkkill -3 um Java-Thread-Dump zu erhalten

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy