• Erledigen Sie die Anwendungssicherheit auf die richtige Weise! Erkennen, schützen, überwachen, beschleunigen und mehr…
  • 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

    Möglicherweise gibt es ein Szenario, in dem Sie den Thread-Dump bei jedem JVM-Stopp durchführen möchten. Dies ist hilfreich, 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-shutdown

    • Ü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.