Javaアプリケーションが異常終了(プロセスが消滅)したときに、各OS上に用意されたクラッシュダンプやコアダンプを採取することにより、異常終了の原因を調査することができる場合があります。
Windows(R)上で異常を調査する場合に採取する、クラッシュダンプの採取方法を説明します。
クラッシュダンプの採取には、Windowsエラー報告(Windows Error Reporting(WER))の機能を使用します。
次の例を参考にして、WERを設定してください。
例
WERの設定例
コマンドプロンプトなどで“regedit”コマンドを投入し、レジストリエディタを起動します。
「HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps」キーを作成します。
LocalDumpsキーにREG_DWORD型でDumpTypeという値を作成し、「2」を設定します。
WERに関する設定の方法については、以下の情報も参照ください。
富士通製サーバ製品の場合:
https://jp.fujitsu.com/platform/server/primergy/soft/ssupportguide/
上記製品以外の場合:
https://msdn.microsoft.com/en-us/library/bb787181.aspx
注意
JDK/JRE 8 をJava EE 7からでなく、直接実行している場合、クラッシュダンプは、Javaプロセスが異常終了(クラッシュ)したときに、自動的に採取されます。
クラッシュダンプは、以下のファイル名で、Javaプロセスのカレントディレクトリに出力されます。
fjvm_pid***.dmp (***はプロセスID)
例
fjvm_pid1234.dmp (1234はプロセスID)
クラッシュダンプを出力させたくない場合は、javaコマンドのオプションに「-XX:-EnableCoreDump」を指定します。
クラッシュダンプが出力されない場合の原因として、システムリソース等の問題がまず考えられます。
カレントディレクトリの書込み権、ディスク容量を確認してください。
Solaris上でのコアダンプ採取のための注意事項を説明します。
コアダンプが出力されない場合の確認
コアダンプが出力されない場合の原因として、システムリソース等の問題がまず考えられます。カレントディレクトリの書込み権、ディスク容量、limit(1)コマンド結果を確認してください。
Linux上でのコアダンプ採取のための注意事項を説明します。
コアダンプが出力されない場合の確認
コアダンプが出力されない場合の原因として、システムリソース等の問題がまず考えられます。カレントディレクトリの書込み権、ディスク容量、limit(1)コマンド結果を確認してください。
ハード/オペレーティングシステムの出荷時、またはオペレーティングシステムのUpdate適用により、デフォルトではコアダンプの出力が設定されていない場合があります。以下を参照して、コアダンプが出力されるように設定してください。
コアダンプ出力の設定方法
コマンドでInterstageを起動させる場合
sh(bash)で"ulimit -c unlimited"コマンド実行後、Interstageを起動させます。クラスタ起動ユーザがInterstage起動ユーザと違う場合は、クラスタ起動前に"ulimit -c unlimited"コマンドを実行してから、クラスタを起動させます。
オペレーティングシステム起動時の自動起動でInterstageを起動する場合(RHEL6)
以下のファイルの記述を変更することにより、オペレーティングシステムの再起動後にcoreが出力されるようになります。
/etc/init.d/functions
「ulimit -S -c unlimited >/dev/null 2>&1」に変更します。
【修正前】
# make sure it doesn't core dump anywhere; while this could mask # problems with the daemon, it also closes some security problems ulimit -S -c 0 >/dev/null 2>&1 または、 ulimit -S -c ${DAEMON_COREFILE_LIMIT:-0} >/dev/null 2>1
【修正後】
# make sure it doesn't core dump anywhere; while this could mask
# problems with the daemon, it also closes some security problems
ulimit -S -c unlimited >/dev/null 2>&1
/etc/rc2.d/S99startis
「ulimit -c unlimited」を追加します。
【修正前】
#!/bin/sh # Interstage Application Server # S99starttis : Interstage Application Server start procedure OD_HOME=/opt/FJSVod export OD_HOME /opt/FJSVod/bin/odalive > /dev/null while [ "$?" != "0" ] do sleep 1 /opt/FJSVod/bin/odalive > /dev/null done /opt/FJSVtd/bin/isstart
【修正後】
#!/bin/sh
# Interstage Application Server
# S99starttis : Interstage Application Server start procedure
OD_HOME=/opt/FJSVod
export OD_HOME
ulimit -c unlimited
/opt/FJSVod/bin/odalive > /dev/null
while [ "$?" != "0" ]
do
sleep 1
/opt/FJSVod/bin/odalive > /dev/null
done
/opt/FJSVtd/bin/isstart
オペレーティングシステム起動時の自動起動でInterstageを起動する場合(RHEL7/RHEL8)
unitファイルに以下の設定を追加してください。unitファイルでの定義方法については、"付録I RHEL7/RHEL8のunitファイルでの環境定義"を参照してください。
記載するセクション | 設定項目 | 設定値 |
---|---|---|
[Service] | LimitCORE | infinity |