Interstage Application Server/Interstage Web Server チューニングガイド |
目次 索引 |
第7章 JDK/JREのチューニング | > 7.2 FJVM | > 7.2.11 FJVMログ |
ここでは、Solaris版JDK/JRE 5.0での出力例を元に説明します。
-------------------------------------------------------------------------------- #### Java VM: Java HotSpot(TM) Server VM (1.5.0_FUJITSU_MODIFIED-B**[*****] mixed mode) >>>> Logging process start. [pid=27758] Time=Fri Jan 12 20:37:57 2007
(1) 異常終了箇所の情報
異常終了箇所に関する情報が確認できます。
libjvm.soのsysThreadAvailableStackWithSlack関数の近くでSIGSEGV(メモリアクセスで不正なセグメントを参照)が発生しています。
本例の場合、Java VM内で異常が発生していると判断します。
異常終了箇所がJavaアプリケーション内でないため、異常発生時のスタックトレース情報を調査します。
本例の場合、com.appli.ap.business.AL02ABB00000.toStringの延長で不正なアクセスが発生しているので、そこからAL02ABB00000.javaの489行目で不正なアクセスを招きそうな箇所がないか調べます。
Unexpected Signal : SIGSEGV [0xb] occurred at PC=0xff092068, pid=27758, nid=1 Function name=sysThreadAvailableStackWithSlack Library=/opt/FJSVawjbk/jdk5/jre/lib/sparc/fjvm/libjvm.so 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/jdk5/bin/java 0xff370000 /usr/lib/libthread.so.1 0xff3fa000 /usr/lib/libdl.so.1 〜〜〜〜〜〜〜 略 〜〜〜〜〜〜〜 0xbef70000 /lib/libgen.so.1 0xbd6b0000 /lib/libextpiswu.so 0xbef50000 /opt/FJSVawjbk/jdk5/jre/lib/sparc/libioser12.so Local Time = Fri Jan 12 20:37:57 2007 Elapsed Time = 9885
注意:
Error IDの行が出力されている場合、Error IDとして出力されている値は、Java VMが内部処理矛盾を自己検出した場合に出力する内部情報コードです。SIGSEGVやSIGBUSなどOSが検出した異常の場合には、常に同じ値(4F530E435050****)が出力されます。そのためError IDの先頭が「4F530E435050」で始まるコードの場合は、通常、意味を持ちません。Error IDの先頭が「4F530E435050」以外で始まるコードの場合には、障害情報検索時や判断時のキーワード情報としての意味を持ちます。
# # HotSpot Virtual Machine Error : SIGSEGV (0xb) # [ pc=0xff092068, pid=27758(0x6c6e), nid=1(0x00000001), tid=0x00034d10 ] # # Please report this error to FUJITSU # # Java VM: Java HotSpot(TM) Server VM (1.5.0_FUJITSU_MODIFIED-B** mixed mode) 〜〜〜〜〜〜〜 略 〜〜〜〜〜〜〜
(2)異常終了時のシグナルハンドラ情報
異常終了時のシグナルハンドラに関する情報が確認できます。
本例では、すべて「(in VM)」表示なので、シグナルハンドラの登録変更に関する問題はありません。
##>> Signal Handlers VM signal handler[1]=0xfe1ec0a0, VM signal handler[2]=0xfe4ff780, SIG_DFL= 0x00000000, SIG_IGN=0x00000001, INT_SIG=(16,16), ASYNC_SIG=(17,17) SIGSEGV :signal handler=0xfe4ff780 (in VM *) SIGPIPE :signal handler=0xfe1ec0a0 (in VM) SIGBUS :signal handler=0xfe1ec0a0 (in VM *) SIGILL :signal handler=0xfe1ec0a0 (in VM) SIGFPE :signal handler=0xfe1ec0a0 (in VM) INTERRUPT_SIGNAL :signal handler=0xfe4ff010 (in VM +) ASYNC_SIGNAL :signal handler=0xfe1ec0a0 (in VM)
(3)異常終了時のJavaヒープ領域に関する情報
異常終了時のJavaヒープ領域に関する情報が確認できます。
JDK/JRE 5.0のFJVMの場合:
パラレルGC使用時:
「PSYoungGen」が「New世代領域」、
「PSOldGen」が「Old世代領域」、
「PSPermGen」が「Permanent世代領域」
に関する情報です。FJGC使用時:
「split eden generation」が「New世代領域」、
「tenured generation」が「Old世代領域」、
「compacting perm gen」が「Permanent世代領域」
に関する情報です。シリアルGC使用時:
「def new generation」が「New世代領域」、
「tenured generation」が「Old世代領域」、
「compacting perm gen」が「Permanent世代領域」
に関する情報です。JDK/JRE 1.4のFJVMの場合:
FJGC使用時:
「split eden generation」が「New世代領域」、
「tenured generation」が「Old世代領域」、
「compacting perm gen」が「Permanent世代領域」
に関する情報です。シリアルGC使用時:
「def new generation」が「New世代領域」、
「tenured generation」が「Old世代領域」、
「compacting perm gen」が「Permanent世代領域」
に関する情報です。本例の場合、異常終了時点における「New世代領域」+「Old世代領域」の領域(-Xmxで最大量が指定される領域)には、空きがあることがわかります。
また「Permanent世代領域」に対しても、余裕があることがわかります。注意:
パーセントで示されている値は、異常終了した時点でFJVMがJavaヒープ用に利用可能な状態にしている(コミットしている)メモリ量に対する比率です。利用可能な上限値に対する比率ではありません。
パーセントで示されている値は参照せず、K(キロ)単位で表示されているメモリ使用量の値と、オプションで指定された値(デフォルト値を含む)とを比較して判断してください。注意:
パラレルGCを使用していた場合、以下の「-Xms=」に続いて表示される値は、-Xmsオプションで指定された値などを元に、FJVMがJavaヒープの初期値として計算し直した値であるため、-Xmsオプションで指定した値とは異なりますので注意してください。
##>> Heap PSYoungGen total 15488K, used 14480K [0xf62b0000, 0xf76e0000, 0xf7800000] eden space 15232K, 94% used [0xf62b0000,0xf70cc180,0xf7190000] from space 256K, 12% used [0xf7660000,0xf7668000,0xf76a0000] to space 192K, 0% used [0xf76b0000,0xf76b0000,0xf76e0000] PSOldGen total 1408K, used 156K [0xf3800000, 0xf3960000, 0xf62b0000] object space 1408K, 11% used [0xf3800000,0xf3827198,0xf3960000] PSPermGen total 16384K, used 2173K [0xef800000, 0xf0800000, 0xf3800000] object space 16384K, 13% used [0xef800000,0xefa1f698,0xf0800000] (-Xms=5504K, -Xmx=65536K, -XX:PermSize=16384K, -XX:MaxPermSize=65536K)
目次 索引 |