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