Der Thread-Dump ist für die Fehlerbehebung bei Java-Anwendungen unerlässlich. Wenn Sie an leistungsbezogenen, Speicherverlusten, Debugging usw. arbeiten, werden Sie häufig aufgefordert, einen Thread- und Heap-Dump zu erstellen.

Du darfst Nehmen Sie den Dump manuell Wenn Sie dies jedoch automatisch tun möchten, können Sie dies folgendermaßen tun. Die folgende Demonstration basiert auf

Die folgende Demonstration basiert auf WebSphere 9, aber das Verfahren wäre ähnlich wie bei anderen WAS-Versionen.

Taking Thread Dump When JVM Stop

Es könnte ein Szenario geben, in dem Sie die nehmen möchten Thread Dump wann immer JVM stoppt. Dies ist nützlich, wenn Sie nicht sicher sind, wer oder wie JVM gestoppt wird.

Um dies zu konfigurieren;

  • Melden Sie sich bei WebSphere Administrative Console an
  • Navigieren Sie zu Server >> Servertypen >> WebSphere-Anwendungsserver
  • Gehen Sie in die JVM und erweitern Sie "Java and Process Management" unter Server Infrastructure
  • Klicken Sie auf Prozessdefinition
  • Klicken Sie unter Zusätzliche Eigenschaften >> Benutzerdefinierte Eigenschaften auf „Java Virtual Machine“
  • Klicken Sie auf Neu und geben Sie Name als ein
com.ibm.ws.runtime.dumpShutdown
  • Wert als was immer dies auch sein sollte. 
  • klicken Sie auf OK

Was-Dump-Herunterfahren

  • Überprüfen und speichern Sie die Konfiguration

Jetzt wird ein Heap-Dump generiert, wenn die JVM gestoppt wird.

Ich habe die JVM gestoppt und konnte die folgende Javacore-Datei auf dem WAS-Server unter dem Profilpfad sehen.

-rw-r - r--. 1 root root 3179348 28. November 22:49 javacore.20161128.224916.4926.0001.txt -rw-r - r--. 1 root root 3124208 28. November 22:49 javacore.20161128.224924.4926.0002.txt

Taking Thread Dump When Hung

Wenn Sie ein Problem mit hängengebliebenen Threads haben und derzeit den Speicherauszug manuell erstellen, können Sie dies automatisieren.

Bei der Grundkonfiguration generiert WebSphere den Speicherauszug, wenn ein Thread für eine konfigurierte Zeitsteuerung aufgehängt wird.

  • Melden Sie sich bei WAS Console an und gehen Sie in die entsprechende JVM
  • Erweitern Sie unter Serverinfrastruktur die Option "Administration" und klicken Sie auf Benutzerdefinierte Eigenschaften
  • Fügen Sie die folgenden drei Eigenschaften hinzu

com.ibm.websphere.threadmonitor.threshold - Dump generieren, wenn ein Thread für die konfigurierte Zeit hängen bleibt. Wert ist in Sekunden.

com.ibm.websphere.threadmonitor.interval - Wie oft sollte der Thread-Monitor nach hängenden Threads suchen? Der Wert in Sekunden.

com.ibm.websphere.threadmonitor.dump.java - Dump generieren, wenn erkannt. Wert ist wahr.

wurde-Dump-aufgehängt

Die obige Konfiguration generiert einen Speicherauszug, wenn ein Thread aufgehängt wird 600 Sekundenund WebSphere überwacht den Thread alle 300 Sekunden.

Sobald Sie die Müllkippe haben, können Sie Analysieren und beheben Sie das Anwendungsproblem. Ich hoffe das hilft.