6.5.1 プロセスダウンのトラブルシュート
プロセスダウンのトラブルシュートについて説明します。
- 〈この項の構成〉
(1) プロセスダウン発生時の対処フロー
プロセスダウンが発生した場合の,トラブルシュートの流れを次に示します。
フローの詳細で示した処理の詳細は(2)で説明します。
(2) プロセスダウン発生時の対処の流れ
プロセスダウンのフローの内容に沿って,それぞれの作業について説明します。
-
エラーリポートファイル(hs_err_pid<プロセスID>.log)を開く
エラーが発生した時刻近辺に出力されたエラーリポートファイルを開き,Managerのログと突き合わせます。
-
エラーリポートファイルの出力先および出力ファイル名
C:\Program Files\Hitachi\Cosminexus\CC\server\public\ejb\<サーバ名称>\hs_err_pid<サーバプロセスID>.log
-
-
OutOfMemoryErrorが発生しているかどうか確認する
OutOfMemoryErrorが発生している場合,「java.lang.OutOfMemoryError occurred.」が表示されています。
OutOfMemoryErrorが発生している場合,およびOutOfMemoryErrorが発生していない場合について,それぞれエラーリポートファイルの出力例と対処を次に示します。
- OutOfMemoryErrorが発生している場合
-
出力例
: # # java.lang.OutOfMemoryError occurred. # JavaVM aborted because of specified -XX:+HitachiOutOfMemoryAbort options. # Please check Javacorefile:D:\Cosminexus\CC\server\public\ejb\MyJ2EEServer\javacore2100.120124144835.txt #
背景色付きの太字で示した個所がOutOfMemoryErrorが発生している場合に出力される文字列です。
対処
エラーリポートファイルを調査する必要があります。手順3.へ進んでください。
- OutOfMemoryErrorが発生していない場合
-
出力例
: # # A fatal error has been detected by the Java Runtime Environment # # EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x0000000008303b00, pid=1356, tid=2604 # # Java VM: Java HotSpot(TM) 64-Bit Server VM (25.20-b23-CDK0970-20150127 mixed mode windows-amd64) # Problematic frame: # V [C:\Program Files\Hitachi\Cosminexus\jdk\jre\bin\server\jvm.dll+0x303b00] #
対処
次のような調査が必要です。手順に従って調査してください。なお,手順の番号は図6-6と対応しています。
3-1 シグナルが発生したライブラリを確認する
出力例の赤字部分を確認し,ダウンしたライブラリ名,およびダウンしたネイティブ関数を控えてください。
出力例の場合,ライブラリ名は「NativeCrash.dll」,ダウンしたネイティブ関数は「(null)+0x77C785BA」となります。
3-2 シグナルを確認する
「An unexpected error has been detected by HotSpot Virtual Machine:」で続く個所がシグナル6(SIGABRT,SIGIOT)でダウンしている場合,上位のabort関数でアボートしていることから呼び出し先のライブラリを調査する必要があります。
上記の例はアボートしていません。
この例では,Oracleのサポートに詳細な調査を依頼します。
3-3 収集結果を問い合わせ窓口に送付する
ひかえておいたライブラリ,およびシグナルの内容をモジュール開発元,またはご購入契約に基づくお問い合わせ窓口に送付して調査を依頼してください。
-
拡張verbosegc情報を確認してメモリサイズをチューニングする
拡張verbosegc情報を確認して,Javaヒープのメモリサイズを調整します。
設定済みの-Xmxオプションの値を目安として1.5倍〜2倍にしてください。ただし,ハード搭載メモリサイズを超えないように注意してください。
-
マシンを再起動する
マシンを再起動して,問題なく動作できるか確認します。
- ポイント
-
マシンを再起動し,問題なく動作した場合は,トラブルシュートは完了です。
マシンを再起動してもうまく動作しない場合は,手順5.へ進んでください。
-
クラス別統計情報を出力する
JavaVMのGCのログ(javalog[n].log),または稼働情報ログ(HJVMStats_<YYYYMMDDhhmm><TZ>.csv)を確認し,メモリが10MB〜20MB増加するごとにjheapprofコマンドを実行してクラス別統計情報(txtファイル)を出力します。
メモリが100MB以上増加するまで繰り返してください。
コマンドの実行間隔が短い場合,リークしているメモリサイズも小さいためメモリ増加しているクラスを探すのが難しくなります。
実行間隔を長くしメモリの増分を大きくすることで,リークしているクラスを目立たせます。
- 実行例
-
% jheapprof -p 2463
- 注意
-
実行例の「2463」はプロセスIDになります。コマンドを実行する場合は問題となっているプロセスIDを指定してください。
-
クラス構造一覧を出力する
前の手順でピックアップしたクラスをメンバに持つクラスの構造を一覧に出力し,調査対象のクラスリストを作成し,調査対象をリストアップします。
- 実行例
-
% jheapprof -class org.apache.catalina.loader.WebappClassLoder -p 2463
- 注意
-
実行例の「2463」はプロセスIDになります。コマンドを実行する場合は問題となっているクラスを指定してください。
実行例の「org.apache.catalina.loader.WebappClassLoder」はクラス名になります。Metaspace領域不足によるOutOfMemoryErrorはこのクラスを使って調べます。
-
開発元に調査を依頼する
前回の手順で収集した情報を開発元へ送付して,調査を依頼してください。