Blog

WebSphere: Heap-Dump mit Jython generieren

Bild von Kamen Tarlov
Kamen Tarlov
CEO & DevOps-Leiter
02.06.2016
Lesezeit: 2 Minuten.
Zuletzt aktualisiert am: 04.03.2025

Inhaltsübersicht

Java Virtual Machine (JVM) Heap Space

Mögliche Fehler des Java-Code-Core-Dumps JVM Es wird empfohlen, den Anwendungsserver zu optimieren und nicht nur die bei der Installation des Anwendungsservers zugewiesenen Standardwerte beizubehalten. Wenn die Heap-Größe nicht verwaltet oder abgestimmt wird, können Sie die Symptome einer schlechten Speicherverwaltung sehen, die von sporadischen Leistungsproblemen bis hin zu periodischen Ausfällen und automatischen Neustarts der JVM reichen können, die möglicherweise keinen Core-Dump oder Fehler erzeugen.

Wir können jedoch JVM-Argumente festlegen, um sicherzustellen, dass Java-Core-Dumps ausgeführt werden, wenn die JVM abstürzt. Ein Java-Core-Dump ähnelt einem Linux-Core-Dump, der die Prozesse und den Zustand des Betriebssystems enthält; ein Java-Core-Dump enthält jedoch nur die Prozesse und den Zustand der JVM selbst. Eine JVM kann aufgrund von hängenden Threads oder anderen internen JVM-Problemen abstürzen; es könnte sich um fehlerhaften Code handeln, d. h. um einen Bug, oder um viele andere Szenarien wie festgefahrenen Code. Ein Java-Core-Dump ist im Wesentlichen ein Satz von Java-Stack-Traces zum Zeitpunkt des Auftretens des Fehlers oder wenn ein Core-Dump manuell ausgegeben wird. Wir können nicht alle Szenarien abdecken, die einen JVM-Absturz verursachen können, aber wir können Ihnen einige Konfigurationen zeigen, die Ihnen helfen, Debug-Informationen zu sammeln, die Sie bei Ihren Untersuchungen verwenden können, um die Ursache eines JVM-Absturzes zu finden. Wenn wir die JVM auf core dump setzen, erhalten wir eine core dump Datei, die wir überprüfen können. Wenn die JVM abgestürzt ist, weil sie nicht über genügend Speicher verfügte, würde der Core Dump dies anzeigen. Es ist wichtig, dass jeder Administrator weiß, wie er die Einstellungen verwenden und die resultierende Core-Dump-Datei debuggen kann. Zunächst werden wir uns ansehen, wie man einen Java-Core-Dump erzeugt, und dann werden wir uns ansehen, wie man Core-Dumps analysiert.

Wie man Java-Kerndumpdateien erzeugt

Anfordern eines Java-Kerndumps mit Jython

Es gibt mehrere Möglichkeiten, Core Dumps zu erzeugen. Zunächst werden wir ein einfaches Jython-Skript erstellen, das wir ausführen können, um Java-Core-Dump-Informationen zu erzeugen.
Erstellen Sie auf Ihrem Linux-System eine Datei namens threadDump.py und fügen Sie die
den folgenden Code:

jvmObject = AdminControl.completeObjectName("type=JVM,process=s
erver1,*" )
AdminControl.invoke(jvmObject, "dumpThreads" )
<was_profile_root>/wsadmin.sh -lang jython –f <path_to_file>/
threadDump.py

Anfordern eines Heap-Dumps mit JythonJV


Wenn wir das Skript wie folgt ändern, können wir stattdessen den Heap-Dump erhalten:

jvmObject = AdminControl.completeObjectName("type=JVM,process=serv
er1,*" )
AdminControl.invoke(jvmObject, "generateHeapDump" )

Abfrage mit dem Befehl kill -3

Dieses Signal wird gesendet, wenn ein kill -3-Befehl gegen den JVM-Prozess ausgegeben wird. Dieses Signal beendet normalerweise nicht den JVM-Prozess. Es erzeugt einen Thread-Dump (Java-Core) zur Diagnose eines potenziell hängenden JVM-Prozesses.

Es empfiehlt sich, eine Reihe von Java-Core-Dateien zu erstellen, so dass Sie den Befehl in einer Folge von 60 Sekunden ausführen müssen.

Eine Antwort

  1. Wie können wir diesen Prozess automatisieren? Ich muss Thread-Dumps erzeugen, wenn etwas mit der JVM nicht in Ordnung ist, um sie zu analysieren.

Eine Antwort hinterlassen

Newsletter für Tech-Experten

Signal, kein Rauschen –

direkt in Ihren Posteingang.

Schließen Sie sich mehr als 12.000 Ingenieuren und Führungskräften aus der Wirtschaft an, die Praxisberichte zu SRE, DevOps und Cloud-nativer Zuverlässigkeit erhalten.

Tech-Blogs mit tiefgehenden Einblicken und Fallstudien
Neue Technologien, sorgfältig ausgewählt

Ihre geschäftliche E-Mail-Adresse

Wir gehen respektvoll mit Ihrem Posteingang um. Lesen Sie unsere Datenschutzerklärung.

Mehr Beiträge

Bei der Arbeit mit Terraform sollte das Standard-Meta-Argument zum Erstellen von Ressourcen fast immer „for_each“ lauten – insbesondere bei Infrastruktur, die voraussichtlich lange bestehen bleibt und sich weiterentwickelt...
Lesen
Die sichere Verwaltung von Geheimnissen in Kubernetes stellt eine entscheidende Herausforderung für moderne Cloud-native Umgebungen dar. Anmeldedaten für Anwendungen, Zertifikate, private Schlüssel und Passwörter müssen auf sichere und nachverfolgbare Weise verwaltet werden, ...
Lesen
Kontakt aufnehmen
ITGix bietet Ihnen fachkundige Beratung und maßgeschneiderte DevOps-Services, um Ihr Unternehmenswachstum zu beschleunigen.
Newsletter für
Technik-Experten
Schließen Sie sich 12.000+ Geschäftsführern und Ingenieuren an, die Blogs, e-Books und Fallstudien Fallstudien über neue Technologie erhalten.