Interstage Application Server トラブルシューティング集 |
目次
索引
![]() ![]() |
第18章 Java実行環境運用時の異常 |
FJVM動作時に何らかの理由により異常終了した場合、FJVMログが出力されます。
このFJVMログの情報から、調査のための情報を得ることができます。
ファイル名は次のとおりです。
fjvm_pidXXXX.log
XXXXは、プロセスのID番号が入ります。
FJVMログが格納されるファイルの出力先は、Javaプロセス実行時のカレントディレクトリです。
詳細は、“J2EE ユーザーズガイド”の“J2EEアプリケーションが運用される環境(IJServer)”を参照してください。
FJVMのログは異常終了時に各種の情報を出力しますが、その中から以下を確認できます。
以下の情報が出力されます。
異常終了した関数名、ライブラリ名、例外のシグナルから調査を行えます。
該当する関数がアプリケーションである場合、まず、そのアプリケーションにどのような問題があるか、シグナルコードとアドレスから調査を開始します。
該当する関数名、ライブラリ名でない場合、次にスタックトレースを調査します。
スタックトレースについては、“スレッドダンプの見方”を参照してください。
補足
異常終了時に発生した例外に関するシグナルコードの情報として以下の表記がある場合、例外が発生したスレッドでスタックオーバーフローが検出されています。
例外を検出したスレッドに対するスタックサイズを大きくすることで問題が解決する可能性があります。
- SIGSEGV (Stack Overflow)
![]()
![]()
- EXCEPTION_STACK_OVERFLOW
![]()
スタックオーバーフローが原因で発生した異常終了の場合、FJVMの処理へ制御が渡らず、そのままWindowsのワトソン博士へ制御が渡されることがあります。その場合はFJVMログが出力されないため、ワトソン博士が出力するログファイル「drwtsn32.log」の出力結果を確認してください。
例外番号として以下の情報が出力されている場合には、スタックオーバーフローが原因と考えられます。c00000fd (スタックオーバーフロー)
Java VMの実行制御で必要となる以下の各シグナルに対するシグナルハンドラ情報(登録されているシグナルハンドラのアドレス,登録されているシグナルハンドラがJava VMで登録したシグナルハンドラかどうかの正否)が確認できます。
ログ出力で表記されるシグナルコード
Solaris版FJVM |
Linux版FJVM |
---|---|
SIGSEGV |
SIGSEGV |
Java VM以外の処理で登録されたシグナルハンドラが設定されていた場合(シグナルハンドラ情報として、各シグナルに対する行の表記中に「(not in VM)」がある場合)、Java VMは正常に動作しません。この場合、当該シグナルハンドラを登録しない様に、実行するアプリケーションを修正します。
Solaris OE版FJVM 1.3.1では、Java VMの実行制御としてSIGPIPEシグナルを無視(SIG_IGN)に設定しています。そのためSolaris OE版FJVM 1.3.1で発生した異常終了時のFJVMログでは、SIGPIPEシグナルに関するシグナルハンドラ情報は出力しません。
異常終了時のJavaヒープ領域の使用状況が確認できます。
Javaヒープ領域量に因る異常終了の場合、異常終了時にどのJavaヒープ領域の枯渇により異常終了が発生したのかが確認できます。
注)表示の関係上、改行している箇所があるため、実際の出力形式とは若干の違いがあります。
************************************************************************************* #### Java VM: Java HotSpot(TM) Server VM (1.3.1_FUJITSU_MODIFIED-B** mixed mode) >>>> Logging process start. [pid=7886] Time=Thu Aug 14 16:09:01 2003
(1) 異常終了箇所の情報 |
Unexpected Signal : SIGSEGV occurred at PC=0xff092068 Function name=sysThreadAvailableStackWithSlack Library=/opt/FJSVawjbk/jdk13/jre/lib/sparc/fjvm/libjvm.so
(2) スタックトレース |
Current Java thread: 0xfb8e2850 - 0xfb8e4b7c at com.appli.ap.business.AL02ABB00000.toString(AL02ABB00000.java:489) 0xfb8e2850 - 0xfb8e4b7c at com.appli.ap.business.AL02ABB00000.toString(AL02ABB00000.java:520) at java.lang.String.valueOf(String.java:1942) at java.lang.StringBuffer.append(StringBuffer.java:365) - locked <f6db38d8> (a java.lang.StringBuffer) at com.appli.ap.business.AL02ABB25201.doExecute(AL02ABB25201.java:774) at com.appli.ap.formula.AFCC6842.doDelegate(AFCC6842.java:221) at com.appli.ap.formula.ejb.session.AFSF6801.doExecuteOrdinarily (AFSF6801.java:381)
at com.appli.ap.formula.ejb.session.FJAFSF6801_AFSF6801RemoteImpl. doExecuteOrdinarily(FJAFSF6801_AFSF6801RemoteImpl.java:464) - locked <df672838> (a com.appli.ap.formula.ejb.session.FJAFSF6801_AFSF6801RemoteImpl) at com.appli.ap.formula.ejb.session._FJAFSF6801_AFSF6801RemoteImpl_Tie._invoke (_FJAFSF6801_AFSF6801RemoteImpl_Tie.java:76) 0xfb98c930 - 0xfb98cc68 at com.fujitsu.ObjectDirector.CORBA.ServerRequest.call_invoke (ServerRequest.java:961) at com.fujitsu.ObjectDirector.PortableServer.POA.MsgRecv(POA.java:2578) at com.fujitsu.ObjectDirector.PortableServer.POAManager.MsgRecv (POAManager.java:1061) at com.fujitsu.ObjectDirector.PortableServer.POAnc.MsgRecv(POAnc.java:163) Dynamic libraries: 0x10000 /opt/FJSVawjbk/jdk13/bin/../bin/sparc/native_threads/java 0xff360000 /usr/lib/lwp/libthread.so.1 0xff390000 //lib/libdl.so.1 〜〜〜〜〜〜〜 略 〜〜〜〜〜〜〜 0xbef70000 //lib/libgen.so.1 0xbd6b0000 //lib/libextpiswu.so 0xbef50000 /opt/FJSVawjbk/jdk13/jre/lib/sparc/libioser12.so Local Time = Thu Aug 14 16:09:01 2003 Elapsed Time = 9885
注意: Error IDとして出力されている値は、Java VMが内部処理矛盾を自己検出した場合に出力する内部情報コードです。SIGSEGVやSIGBUSなどOSが検出した異常の場合には、常に同じ値(4F530E435050****)が出力されます.そのためError IDの先頭が「4F530E435050」で始まるコードの場合は、通常、意味を持ちません。Error IDの先頭が「4F530E435050」以外で始まるコードの場合には、障害情報検索時や判断時のキーワード情報としての意味を持ちます。 |
# # HotSpot Virtual Machine Error : SIGSEGV # Error ID : 4F530E43505002CE (share.vm.runtime.os.cpp, 718) [ Patched ] # Please report this error to FUJITSU # # Java VM: Java HotSpot(TM) Server VM (1.3.1_FUJITSU_MODIFIED-B** mixed mode) # >>>> Start of VM status report
(3)異常終了時のシグナルハンドラ情報(Solaris OE版/Linux版) |
##>> Signal Handlers VM signal handler[1]=0xfee157cc, VM signal handler[2]=0xfefe92d0, SIG_DFL=0x0, SIG_IGN=0x1, INT_SIG=(16,16) SIGSEGV :signal handler=0xfefe92d0 (in VM *) SIGBUS :signal handler=0xfee157cc (in VM) SIGILL :signal handler=0xfee157cc (in VM) SIGFPE :signal handler=0xfee157cc (in VM) INTERRUPT_SIGNAL :signal handler=0xfee157cc (in VM)
(4)異常終了時のJavaヒープ領域に関する情報 注意: 各情報内にパーセント表示の値がありますが、その値は異常終了した時点でFJVMがリザーブしているメモリ量に対する比率であり、利用可能な上限値に対する比率ではありません。K(キロ)単位で表示されているメモリ使用量の値と、オプションで指定された値(デフォルト値を含む)とを比較して判断してください。 |
##>> Heap new generation total 2560K, used 2560K [0xc4400000, 0xd7800000] eden space 2304K, 100% used [0xcb060000,0xcb2a0000,0xcb2a0000] from space 256K, 100% used [0xcb020000,0xcb060000,0xcb060000] to space 0K, 2147483647% used [0xd1cb0000,0xd1cb0000,0xd1cb0000] tenured generation total 520192K, used 520187K [0xd7800000, 0xf7400000] old space 520192K, 99% used [0xd7800000,0xf73feeb0,0xf7400000] permanent generation total 12032K, used 11939K [0xf7400000, 0xfb400000] old space 12032K, 99% used [0xf7400000,0xf7fa8f88,0xf7fc0000] *************************************************************************************
目次
索引
![]() ![]() |