Javacore erfassen
Sie können verschiedene Methoden verwenden, um einen Javacore aus einem IBM® Java Development Kit oder Threadspeicherauszüge für Java Development Kits anderer Anbieter zu erfassen.
Javacore erfassen
Ein Javacore-Speicherauszug (auch als Threadspeicherauszug bezeichnet) ist eines der wichtigsten Dokumente für die Problembestimmung, das von einem Anwendungsserver erstellt wird.
- Verwenden Sie das Tool 'wsadmin', um einen Javacore im Profilverzeichnis zu erstellen.
- Unter Windows:
<PROFILVERZEICHNIS>\bin\wsadmin.bat [-host hostname] [-port portnummer] [-user userid -password kennwort] -c "$AdminControl invoke [$AdminControl queryNames WebSphere:name=JVM,process=server1,*] dumpThreads" - Unter UNIX (IBM Java Development Kits):
<PROFILVERZEICHNIS>>/bin/wsadmin.sh[-host hostname] [-port portnummer] [-user userid -password kennwort] -c "\$AdminControl invoke [\$AdminControl queryNames WebSphere:name=JVM,process=server1,*] dumpThreads"
Anmerkung: Die eckigen Klammern [] vor und nach dem Befehl AdminControl queryNames sind Bestandteil des Befehls und bezeichnen keine optionalen Parameter (im Unterschied zu den eckigen Klammern um die Elemente 'host', 'port' und 'user'). Der Prozessname 'server1' muss gegebenenfalls an Ihre Konfiguration angepasst werden. - Unter Windows:
- Es besteht die Möglichkeit, ein Signal an den Serverprozess zu senden:
- Unter Windows:Der Serverprozess muss über ein Start-Script gestartet werden, damit ein Signal an den Prozess übermittelt werden kann. In diesem Fall ist vor dem Starten des Servers eine spezielle Konfiguration erforderlich.
- <PROFILVERZEICHNIS>\bin\startServer.bat server1 -script SERVER1.bat
- b. SERVER1.bat
Der Serverprozess wird in einem Befehlsfenster gestartet. Überprüfen Sie in den Protokollen, dass der Server erfolgreich gestartet wurde, da der temporäre JVM-Prozess (der normalerweise den Serverprozess startet) nicht verwendet wird.
- <CTRL><BREAK>
Setzen Sie einen Tastaturbefehl <CTRL><BREAK> (Steuerung + Unterbrechung) in dem Befehlsfenster ab, in dem der Serverprozess ausgeführt wird. Ein Javacore wird erstellt.
- Unter UNIX (alle Java Development Kits): kill -3 <pid>
Dabei ist <pid> die Prozess-ID von WebSphere Process Server. Für IBM Java Development Kits wird ein Javacore im Verzeichnis <PROFILVERZEICHNIS> erstellt.
Für Java Development Kits anderer Anbieter wird ein Threadspeicherauszug in die Protokolldatei native_stdout.log geschrieben.
- Unter Windows:
- Eine alternatives Verfahren zum Erstellen eines Speicherauszugs einer Windows-Kerndatei ist die
Verwendung von 'jvmdump'.
Bei diesem Verfahren ist vor dem Starten des Servers keine spezielle Konfiguration erforderlich. Es ist jedoch eine spezielle ausführbare Datei vom JVM-Team erforderlich (JVM = Java Virtual Machine). Die Programmdatei jvmdump.exe kann durch Senden einer Notes-E-Mail an die Adresse jvmcookbook@uk.ibm.com angefordert werden. Der Vorteil dieser Methode besteht darin, dass zusätzliche Informationen zu dem nativen Code bereitgestellt werden können, der in der JVM ausgeführt wird. Das Format des Speicherauszugs unterscheidet sich von den IBM Javacore-Objekten.
- jvmdump.exe <PID>
- <WAS_HOME>>\java\jre\bin\jextract.exe <core.name.dmp>
- <WAS_HOME>\java\jre\bin\jdumpview.exe
- set dump <core.name.dmp>.zip
- display thread
Zeigt den aktuell ausgeführten Thread zum Zeitpunkt des Speicherauszugs an.
- c. display thread *
Zeigt alle Threads aus dem Speicherauszug an.
Weitere Informationen zum Dienstprogramm 'jdumpview' finden Sie im Handbuch Diagnostics Guide für IBM Developer Kit and Runtime Environment, Java™ Technology Edition Version 5.0.
