Speicherauszüge von Threads in Serverprozessen mit Scripting erstellen
Verwenden Sie das Objekt "AdminControl", um einen Java-Core-Dump zu erstellen, der die Java-Threads eines aktiven Servers enthält.
Vorbereitende Schritte
Damit diese Task gestartet werden kann, muss das Tool "wsadmin" aktiv sein. Weitere Informationen finden Sie im Artikel wsadmin-Scripting-Client mit wsadmin-Scripting starten.
Informationen zu diesem Vorgang
Der Befehl "dumpThreads" generiert einen Java-Heapspeicherauszug, einen TDUMP (Java Virtual Machine (JVM) Initiated System Transaction
Dump) und einen Auszug des Java-Kernspeichers (auch Java-Core-Dump genannt).
- Ein Java-Heapspeicherauszug enthält alle Liveobjekte im Java-Heapspeicher, die von der aktiven Java-Anwendung verwendet werden.
- A System-TDUMP enthält den Inhalt aller fehlerhaften Adressräume.
Fehler vermeiden: Unter bestimmten Umständen kann der Prozess für die Erkennung blockierter Thread häufig ausgelöst werden, was dazu führt, dass System-TDUMPs gestartet werden. Diese Speicherauszüge können umfangreich sein, und ihre Verarbeitung kann mehrere Minuten dauern. Während der Verarbeitung der Speicherauszüge ist der Adressraum des Servers nicht zuteilbar, was die Haltezeit von Sperren, deren Eigner der Adressraum ist, verlängern kann. Wenn Ihr Server gemeinsam genutzte Subsysteme wie DB2 oder WebSphere MQ verwendet, kann sich die längere Haltezeit der Sperren nachteilig auf diese gemeinsam genutzten Subsysteme und andere Adressräume auswirken, die diese Subsysteme ebenfalls nutzen. Sollten Sie feststellen, dass Threads häufig blockieren, können Sie die Erstellung von System-TDUMPs in dem Anwendungsserver, in dem die blockierten Threads auftreten, inaktivieren.gotcha
- ein Java-Core-Dump enthält den gesamten Hauptspeicher, der von der JVM verwendet wird, sowie den Status aller Threads in den Serverprozessen.
Wenn Sie die Generierung des Heapspeicherauszugs inaktivieren möchten, setzen Sie die Umgebungsvariable
"wsadmin_dumpthreads_enable_heapdump" awuf 0. Wenn Sie die Generierung des f you want to disable the generation
System-TDUMP inaktivieren möchten, setzen Sie die Umgebungsvariable "wsadmin_dumpthreads_enable_javatdump" auf 0.
Sie können diese Variablen auf Knoten- oder Zellenebene definieren.
Vorgehensweise
- Mit Jacl:
set jvm [$AdminControl completeObjectName type=JVM,process=server1,*] $AdminControl invoke $jvm dumpThreads
- Mit Jython:
jvm = AdminControl.completeObjectName('type=JVM,process=server1,*') AdminControl.invoke(jvm, 'dumpThreads')
Sie können auch den Befehl "Modify" verwenden, um einen Java-Kernspeicherauszug zu erstellen, wenn eine Zeitlimitüberschreitung auftritt.
Nähere Informationen zu den Umgebungsvariablen für die Erstellung von Threadspeicherauszügen finden Sie in der Veröffentlichung Java Diagnostics.