スクリプトによるサーバー・プロセスにおけるスレッドのダンプ
稼働中のサーバーの Java スレッドを含む Java コア・ダンプを作成するには、AdminControl オブジェクトを 使用します。
始める前に
このタスクを開始する前に、wsadmin ツールが稼働している必要があります。 詳しくは、wsadmin スクリプト・クライアントの開始の項目を参照してください。
このタスクについて
dumpThreads コマンドは、Java ヒープ・ダンプ、
Java 仮想マシン (JVM) が開始したシステム・トランザクション・ダンプ (TDUMP)、
および Java コア・ダンプを生成します。
- Java ヒープ・ダンプには、稼働中の Java アプリケーションによって 使用されている Java ヒープ上のすべての活動中のオブジェクトが含まれます。
- システム TDUMP には、障害が起こっているすべてのアドレス・スペースの内容が
含まれます。
トラブルの回避 (Avoid trouble): 場合によっては、ハング・スレッド検出プロセスが頻繁に実行されて、システム TDUMP が開始されることがあります。これらのダンプは大きいサイズになる可能性があるとともに、処理するのに数分かかることがあります。これらのダンプの処理中は、サーバーのアドレス・スペースをディスパッチできず、その結果として、このアドレス・スペースによって所有されたロックが保持される時間が延長されることがあります。お使いのサーバーで DB2 や WebSphere MQ などの共有サブシステムが使用されている場合は、ロックの保持時間が延長されることで、それらのサブシステムを共有している他のアドレス・スペースやそれらの共有サブシステム自体が悪影響を受ける可能性があります。 したがって、ハング・スレッドが頻繁に発生する場合は、ハング・スレッドが発生しているアプリケーション・サーバー上でシステム TDUMP が生成されないようにすることをお勧めします。gotcha
- Java コア・ダンプには、JVM によって使用されているすべてのメモリー、 および、サーバー・プロセス内の各スレッドの状態が含まれます。
ヒープ・ダンプの生成を使用不可にする
場合は、wsadmin_dumpthreads_enable_heapdump 環境変数
を 0 に設定します。システム TDUMP の生成
を使用不可にする場合は、wsadmin_dumpthreads_enable_javatdump 環境変数
を 0 に設定します。これらの変数
はノード・レベルおよびセル・レベルのいずれでも設定できます。
手順
Java コア・ダンプを生成するには、以下のいずれかのコマンドを発行します。
- Jacl の使用:
set jvm [$AdminControl completeObjectName type=JVM,process=server1,*] $AdminControl invoke $jvm dumpThreads
- Jython の使用:
jvm = AdminControl.completeObjectName('type=JVM,process=server1,*') AdminControl.invoke(jvm, 'dumpThreads')
Modify コマンドを使用して、タイムアウトが発生するたびに Java コア・ダンプを生成することもできます。
スレッドのダンプを処理する環境変数について詳しくは、Java Diagnostics ガイドを参照してください。
注: dumpThreads コマンドは、-Xdumps の設定に応じて他のタイプのダンプ・ファイルを作成します。ダンプの出力はプラットフォームに応じて異なり、システムのコア・ファイル、ヒープ、およびスナップ・ダンプを含んでいることがあります。