4.9.2 J2EEサーバのメモリダンプの取得
J2EEサーバのメモリダンプの取得について,OSごとに説明します。
- 〈この項の構成〉
(1) Windowsの場合
J2EEサーバが稼働している場合(cjstartsvプロセスが存在する場合),タスクマネージャ※からメモリダンプを採取します。
J2EEサーバが稼働していて,かつ,強制停止してメモリダンプを取得する場合,cjstopsvコマンドに-fdオプションを指定して実行し,メモリダンプを取得します。
J2EEサーバがダウンしている場合,Windowsのデバッグツール※からメモリダンプを採取します。
- 注※
-
詳細は,Microsoft社のホームページを参照してください。
ダウンしている場合のメモリダンプを取得するためには,事前に設定を行う必要があります。設定方法については,「3.3.15 ユーザダンプ取得の設定」を参照してください。
(2) UNIXの場合
cjstartsvプロセスがダウンした場合,「<作業ディレクトリ>/ejb/<サーバ名称>」に出力されたcoreダンプを取得します。
coreダンプのファイル名は,cjstartsvプロセスの再起動時に「core.<出力日時※>」(AIXの場合)または「core.<プロセスID>.<出力日時※>」(Linuxの場合)にリネームされます。cjstartsvプロセスの再起動時にcoreダンプが上書き保存されないため,障害発生時のcoreダンプを保存できます。
- 注※
-
出力日時は「YYMMDDhhmmss」の形式で出力されます。
YY:西暦(下2けた) MM:月(2けた) DD:日(2けた)
hh:時(24時間表記で2けた) mm:分(2けた) ss:秒(2けた)
なお,保存するcoreダンプは上限値を設定できます。Windowsの場合,cjstartsvプロセスの再起動時,およびjavacoreコマンド実行時に,出力日時が古い順に削除されます。UNIXの場合,「<作業ディレクトリ>/ejb/<サーバ名称>」に出力されるcoreダンプファイルの合計が上限値を超えたときに,出力日時が古い順に削除されます。上限値は,簡易構築定義ファイルの論理J2EEサーバ(j2ee-server)の<configuration>タグ内に,J2EEサーバの拡張パラメタのejb.server.corefilenumで指定します。なお,ファイルの削除はcjstartsvプロセスの再起動時に実行されます。coreファイルのファイル数の上限値の設定については,「3.3.16 coreダンプ取得の設定」を参照してください。
coreダンプを取得したあとに,coreダンプからスタックトレース情報だけを取得する場合は,javatraceコマンドを実行してください。スタックトレース情報は,JavaVMの異常終了の原因を究明するために必要な情報です。スタックトレース情報の取得方法については,「4.18 JavaVMのスタックトレース情報」を参照してください。
coreダンプは次のような場合にも取得できます。それぞれの場合の取得方法について説明します。
-
cjstartsvプロセスが稼働している状態でcoreダンプを取得する場合
cjstartsvプロセス(J2EEサーバ)が稼働している状態でcoreダンプを取得する場合,cjstartsvプロセスのプロセスIDを確認して,killコマンドを実行します。killコマンドは次の形式で実行してください。なお,killコマンドを実行するとプロセスが終了するため,再起動する前にkillコマンドを実行することを推奨します。
kill -6 <cjstartsvのプロセスID>
-
実行中のJavaプロセスでcoreダンプとスレッドダンプを同時に取得する場合
実行中のJavaプロセスでcoreダンプとスレッドダンプを同時に取得する場合は,javacoreコマンドを実行してください。javacoreコマンドの実行形式を次に示します。なお,指定できるオプションについては,マニュアル「アプリケーションサーバ リファレンス コマンド編」の「javacore(coreファイルとスレッドダンプの取得/UNIXの場合)」を参照してください。
javacore <-プロセス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