4.9.4 Management Serverのメモリダンプの取得
Management Serverのメモリダンプの取得について,OSごとに説明します。
- 〈この項の構成〉
(1) Windowsの場合
Management Serverが稼働している場合(cjstartsv.exeプロセスが存在する場合),タスクマネージャ※からメモリダンプを採取します。
Management Serverがダウンしている場合,Windowsのデバッグツール※からメモリダンプを採取します。
- 注※
-
詳細は,Microsoft社のホームページを参照してください。
Management Serverがダウンしている場合のメモリダンプを取得するためには,事前に設定をする必要があります。設定方法については,「3.3.15 ユーザダンプ取得の設定」を参照してください。
(2) UNIXの場合
Management Server(cjstartsvプロセス)がダウンした場合,「<Application Serverのインストールディレクトリ>/manager/containers/m/ejb/<Management Serverのサーバ名>」に出力されたcoreダンプを取得します。
coreダンプのファイル名は,Management Serverの再起動時に「core.<出力日時※>」(AIXの場合)または「core.<プロセスID>.<出力日時※>」(Linuxの場合)にリネームされます。Management Serverの再起動時にcoreダンプが上書き保存されないため,障害発生時のcoreダンプを保存できます。
- 注※
-
出力日時は「YYMMDDhhmmss」の形式で出力されます。
YY:西暦(下2けた) MM:月(2けた) DD:日(2けた)
hh:時(24時間表記で2けた) mm:分(2けた) ss:秒(2けた)
coreダンプを取得したあとに,coreダンプからスタックトレース情報だけを取得する場合は,javatraceコマンドを実行してください。スタックトレース情報は,JavaVMの異常終了の原因を究明するために必要な情報です。スタックトレース情報の取得方法については,「4.18 JavaVMのスタックトレース情報」を参照してください。
coreダンプは次のような場合にも取得できます。それぞれの場合の取得方法について説明します。
-
Management Serverが稼働している状態でcoreダンプを取得する場合
Management Serverが稼働している状態でcoreダンプを取得する場合,cjstartsvプロセスのプロセスIDを確認して,killコマンドを実行します。killコマンドは次の形式で実行してください。なお,killコマンドを実行するとプロセスが終了するため,Management Serverが再起動する前にkillコマンドを実行することを推奨します。
kill -6 <Management Server(cjstartsv)のプロセスID>
-
実行中のJavaプロセスでcoreダンプとスレッドダンプを同時に取得する場合
実行中のJavaプロセスでcoreダンプとスレッドダンプを同時に取得する場合は,javacoreコマンドを実行してください。javacoreコマンドの実行形式を次に示します。なお,指定できるオプションについては,マニュアル「アプリケーションサーバ リファレンス コマンド編」の「javacore(coreファイルとスレッドダンプの取得/UNIXの場合)」を参照してください。
javacore -p <プロセスID>
上記の形式でコマンドを実行すると,次のメッセージが出力されます。
send SIGQUIT to 8662: ? (y/n)
「y」を入力すると,実行中のJavaプログラムのカレントディレクトリに,"javacore<プロセスID>.<出力日時>.core"(coreダンプ),および"javacore<プロセスID>.<出力日時>.txt"(スレッドダンプ)が出力されます。「n」を入力すると,coreダンプおよびスレッドダンプを取得しないでコマンドの実行を終了します。
coreダンプおよびスレッドダンプを取得すると,実行中のJavaプログラムには,次のメッセージが出力されます。なお,斜体の部分は実際には表示されません。
Now generating core file (javacore8662.030806215140.core)... done (coreダンプおよびスレッドダンプの出力終了) Writing Java core to javacore8662.030806215140.txt... OK