ページの先頭行へ戻る
Interstage Application Server V12.2.0 J2EE ユーザーズガイド(旧版互換)
FUJITSU Software

3.3.11 予兆監視

予兆監視として、以下の機能を提供します。

予兆監視警告メッセージ (Javaヒープ領域)

JavaVMのメモリ割り当てプールおよびメタスペースを監視して、Javaヒープ領域不足の危険性を警告メッセージ(EXTP4368/IJServer30004)で通知する機能を提供します。

参考

Javaヒープ領域は、New世代領域とOld世代領域に大別されます。New世代領域とOld世代領域をメモリ割り当てプールと呼びます。JDK/JRE 7以前でJavaヒープに存在していたPermanent世代領域は、JDK/JRE 8では廃止され、Permanent世代領域の代替として、メタスペースが導入されました。以下の説明で、単に「ヒープ領域」と記載している場合は、メモリ割り当てプールを指します。Javaヒープの構造については、「チューニングガイド」の「JDK/JRE 8のチューニング」の「基礎知識」を参照してください。

予兆監視警告メッセージ (ガーベジコレクション)

JavaVMのガーベジコレクション処理の影響で業務レスポンス低下が発生する可能性を検出し、警告メッセージ(EXTP4368/IJServer30004)で通知する機能を提供します。

管理コンソールモニタ機能

JavaVMの性能情報をInterstage管理コンソールのモニタ機能で参照できます。
警告メッセージはイベントログに出力されます。

予兆監視のチューニング

デフォルトでは予兆監視警告メッセージ(EXTP4368)はシステムログ/イベントログに出力されません。予兆監視警告メッセージ(EXTP4368)を出力させるには、ワークユニットのJavaVMオプションの設定が必要です。


注意

  • JavaVMのヒープ領域使用量、および、メタスペース使用量が、短時間、かつ、急激に増加した場合、予兆監視の警告メッセージが出力されない場合があります。この場合、イベントログに、メモリ不足を示すメッセージが出力されていますので、そのメッセージに従い対処を行ってください。

  • Interstage Application Serverが提供するJavaVM以外を使用した場合、予兆監視、および、Interstage管理コンソールのモニタ画面におけるJavaVMのメタスペース情報やガーベジコレクション情報は利用できません。また、JavaVMのヒープ情報(Kbyte)の最小、最大、上限は、状態の再取得時における最小、最大、上限となります。

  • Interstage Application Serverが提供するJavaVM以外を使用した場合、Interstage管理コンソールのモニタ画面で、以下の情報が常に0と表示されます。

    • JavaVMのメタスペース情報(byte)の現在、最小、最大

    • ガーベジコレクション情報の発生回数、処理トータル時間(msec)、平均ガーベジコレクション発生間隔(msec)

  • ガーベジコレクション情報は、Full GCの情報を使用しています。


予兆監視警告メッセージ (Javaヒープ領域)

JavaVMのメモリ割り当てプールおよびメタスペースを監視して、Javaヒープ領域不足の危険性を警告メッセージ(EXTP4368/IJServer30004)で通知します。

参考

Javaヒープ領域は、New世代領域とOld世代領域に大別されます。New世代領域とOld世代領域をメモリ割り当てプールと呼びます。JDK/JRE 7以前でJavaヒープに存在していたPermanent世代領域は、JDK/JRE 8では廃止され、Permanent世代領域の代替として、メタスペースが導入されました。以下の説明で、単に「ヒープ領域」と記載している場合は、メモリ割り当てプールを指します。Javaヒープの構造については、「チューニングガイド」の「JDK/JRE 8のチューニング」の「基礎知識」を参照してください。

ヒープ領域およびメタスペースの問題を通知する警告メッセージ(EXTP4368/IJServer30004)には3種類のメッセージがあり、EXTP4368/IJServer30004の詳細メッセージで示されます。この他の詳細メッセージは、「予兆監視警告メッセージ (ガーベジコレクション)」を参照してください。


メッセージは、以下の基準で出力されます。

詳細メッセージ

警告の意味

発生条件 (注1)

There are possibilities of OutOfMemoryError because of the lack of the memory: TIME={0} SIZE={1}
TIME: 発生時刻
SIZE: ヒープ領域への追加量の目安(バイト単位) (注2)

ヒープ領域不足のため、OutOfMemoryError発生する危険性があります。

ガーベジコレクション直後のヒープ使用率が95%より大きい場合。または、
ガーベジコレクション直後のヒープ使用率が90%より大きく、かつ、前回のガーベジコレクション発生時よりヒープ使用サイズが増加している状態が3回以上続いた場合。

There are possibilities of OutOfMemoryError because of the lack of the Metaspace: TIME={0} SIZE={1}
TIME: 発生時刻
SIZE: メタスペースへの追加量の目安(バイト単位)(注2)

メタスペース不足のため、OutOfMemoryErrorが発生する危険性があります。

メタスペースの使用量が90%より大きい場合。(注3)

注1) ガーベジコレクションは、Full GCの情報を使用しています。
注2) 警告を回避するためには、警告発生時のヒープ領域またはメタスペースのサイズを大きくする必要があります。「SIZE」として通知している値は、そのための目安となる追加量です。
なお「SIZE」として通知している値は、あくまで目安です。実際に必要な追加量とは異なる場合がありますので、不足リソースの情報を元に、きちんとチューニングを実施してください。

注3) メタスペースは、クラスローダごとに管理するため、あるクラスローダでロードされたクラス情報を別のクラスローダが管理するメタスペースに格納できません。また、各クラスローダ―のメタスペースは、クラス情報ごとに取得するのではなく、ある程度のまとまったサイズごとに取得して、そこにクラス情報を設定していきます。このため、取得済みのメタスペースに空きがある場合でも、別のクラスローダが管理するものであれば、その空きを使用できません(使用済みと扱います)。メタスペースの構造は、チューニングガイドのXXXを参照してください。

上記の理由で、メタスペース全体として空きがある場合でも、本警告がでる場合があります。

※ 注意事項の記載は検討中です。


警告メッセージ(Javaヒープ領域不足)の原因と対処

EXTP4368/IJServer30004(Javaヒープ領域不足の警告メッセージ)が出力される原因は、JavaVMによってあらかじめ予約されたヒープ領域またはメタスペースの不足です。予約するヒープ領域、メタスペースのサイズが不適切な場合や、Javaアプリケーションがメモリリークを起こしている可能性があります。

警告メッセージが出力された場合、そのまま業務を継続するとメモリ不足やレスポンス低下などの問題が発生する可能性があります。これらの問題を解決するために警告メッセージに記載されている不足リソースの情報を元にチューニングを実施してください。
警告を回避するためには、現在の上限値を20%増加させて運用を再開します。それでも警告が出力された場合にはさらに20%増加させ、警告が出力されなくなるまで繰り返しチューニング実施します。チューニングを繰り返して警告メッセージが出力されない状態とすることにより、安定稼動するシステムを構築することができます。ヒープ領域サイズとメタスペースサイズの上限値を増加しても回避できない場合は、Javaアプリケーションが大量にメモリを消費したり、メモリリークを起こすことがないか見直しを行ってください。


JavaVMのヒープ領域およびメタスペースをチューニングする場合、Interstage管理コンソールのワークユニット設定でJavaVMオプションに、ヒープ領域およびメタスペースの上限値を設定するオプションを記載します。
JavaVMのヒープ領域の上限値を設定するためには、-Xmxオプションを使用します。

JavaVMのヒープ領域の上限値を256MByteに設定する場合
    -Xmx256m

また、JavaVMのメタスペースの上限値を設定するためには、-XX:MaxMetaspaceSizeオプションを使用します。

JavaVMのメタスペースの上限値を256MByteに設定する場合
    -XX:MaxMetaspaceSize=256m (本設定を省略した場合は、無制限です。(デフォルト値))

なお、チューニングは開発フェーズ(システムテスト)で実施し、問題を解決してください。
また、チューニング方法には、上記に挙げたヒープ領域またはメタスペースを増加する方法の他に、IJServerのプロセス多重度を増加することにより問題を解決することもできます。


予兆監視警告メッセージ (ガーベジコレクション)

JavaVMのガーベジコレクション処理の影響で業務レスポンス低下が発生する可能性を検出し、警告メッセージ(EXTP4368/IJServer30004)で通知します。
JavaVMのガーベジコレクションの影響を通知する警告メッセージ(EXTP4368/IJServer30004)には以下の5種類があり、EXTP4368/IJServer30004の詳細メッセージで示されます。この他の詳細メッセージは、「予兆監視警告メッセージ (Javaヒープ領域)」を参照してください。

警告メッセージは、ガーベジコレクション処理による業務レスポンス低下の危険性を通知するもので、JavaVMの動作異常を示すものではありません。また、警告が出力された状態で業務を継続したときに、Javaアプリケーションの実行に支障が発生すると一概に言えませんが、警告メッセージが出力されない状態にすることにより、安定稼動するシステムを構築することができます。


ガーベジコレクション処理時間に関する警告メッセージ

メッセージは、EXTP4368/IJServer30004の詳細メッセージで示されます。また、以下の基準で出力されます。

詳細メッセージ

警告の意味 (注)

発生条件

It takes long time to do the garbage collections many times: TIME={0} AVERAGE={1}
TIME: 発生時刻
AVERAGE: 過去3回の平均ガーベジコレクション時間(ミリ秒単位)

ガーベジコレクションに長い時間かかる状態が続いています。

過去3回のガーベジコレクション時間の平均値が5秒より長い場合。

注) ガーベジコレクションは、Full GCの情報を使用しています。


ガーベジコレクション処理中は、メッセージに記載された平均ガーベジコレクション時間のあいだ、アプリケーションが停止する場合があります。メッセージが出力された場合、レスポンス低下などの問題が発生する可能性があります。


警告メッセージ(ガーベジコレクション処理時間)の原因と対処

EXTP4368/IJServer30004(ガーベジコレクション処理時間に関する警告メッセージ)が出力される原因として以下が考えられます。

アプリケーションのレスポンスに問題がある場合は、これらの要因を確認してください。

ヒープ領域のサイズ指定を小さくするチューニングは、十分な検証が必要です。Javaアプリケーションがヒープ領域を多く消費するプログラムの場合、ヒープ領域のサイズ指定を小さくするとOufOfMemoryErrorが発生することも考えられます。


ガーベジコレクション間隔に関する警告メッセージ

ガーベジコレクション間隔に関する4種類のメッセージは、EXTP4368/IJServer30004の詳細メッセージで示されます。いずれも、ガーベジコレクションが短い間隔で連続して発生した場合に、以下の基準で出力されます。

詳細メッセージ

警告の意味 (注1)

発生条件 (注2)

Inefficent garbage collections are run with the short intervals: TIME={0} WEIGHT={1}
TIME: 発生時刻
WEIGHT: ガーベジコレクション直前の旧世代の使用率(%単位)

非効率なガーベジコレクションが短い間隔で発生しています。 (注3)

過去3回のガーベジコレクション間隔時間が20秒より短い場合、かつ、ガーベジコレクション直前のOld世代領域の使用率が65%よりも小さい場合。

The garbage collections are run with the short intervals because of the lack of the memory: TIME={0} SIZE={1}
TIME: 発生時刻
SIZE: ヒープ領域への追加量の目安(バイト単位)(注4)

ヒープ領域不足のため、ガーベジコレクションが短い間隔で発生しています。

過去3回のガーベジコレクション間隔時間が20秒より短い場合、かつ、ガーベジコレクション直後のヒープ使用率が65%より大きい場合。

System.gc() are run with the short intervals: TIME={0} INTERVAL={1}
TIME: 発生時刻
INTERVAL: System.gcのインターバル時間(ミリ秒単位)

System.gcが短い間隔で発生しています。

過去3回のガーベジコレクション間隔時間が20秒より短い場合、かつ、System.gcによって発生したGCの頻度が高い場合。

The garbage collections are run with the short intervals: TIME={0} INTERVAL={1}
TIME: 発生時刻
INTERVAL:ガーベジコレクションのインタバール時間(ミリ秒単位)

ガーベジコレクションが短い間隔で発生しています。

過去3回のガーベジコレクション間隔時間が20秒より短い場合。

注1) ガーベジコレクションは、Full GCの情報を使用しています。
注2) 発生条件を満たした場合でも、ガーベジコレクションの処理時間が短い場合は、メッセージの出力を行わない場合があります。
注3) IJServerワークユニットでは、コネクタとServletコンテナ間の通信にSSLを使用する設定になっている場合、ワークユニット起動時に、このメッセージを含んだメッセージが出力される場合があります。この場合、起動後にInterstage管理コンソールのモニタ画面でJavaVMのヒープ情報およびJavaVMのメタスペース情報に問題がなければ、メッセージを無視してください。
注4) 警告を回避するためには、警告発生時のヒープ領域のサイズを大きくする必要があります。「SIZE」として通知している値は、そのための目安となる追加量です。
なお「SIZE」として通知している値は、あくまで目安です。実際に必要な追加量とは異なる場合がありますので、不足リソースの情報を元に、きちんとチューニングを実施してください。


頻繁なガーベジコレクション処理の実行は、アプリケーションのレスポンス低下などの問題が発生する可能性があります。


警告メッセージ(ガーベジコレクション間隔)の原因と対処

「Inefficent garbage collections are run with the short intervals」が出力された場合、ヒープ領域の空きがあるにもかかわらず、ガーベジコレクション処理(非効率なガーベジコレクション)が発生している可能性があります。原因として以下が考えられます。

アプリケーションのレスポンスに問題がある場合は、これらの要因(Javaヒープ領域に関するチューニングオプションや、アプリケーションからのSystem.gc()、Runtime.gc()の呼び出し)に問題がないか確認してください。


「The garbage collections are run with the short intervals because of the lack of the memory」が出力された場合、ヒープ領域の不足が考えられます。ヒープ領域の不足を回避するには、現在の上限値を20%増加させて運用を再開します。それでも警告が出力された場合にはさらに20%増加させ、警告が出力されなくなるまで繰り返しチューニング実施します。ヒープ領域サイズの上限値を増加しても警告が出力される場合、Javaアプリケーションが短時間に大量のメモリを消費している可能性があります。

「System.gc() are run with the short intervals」が出力された場合、アプリケーションがSystem.gc()、Runtime.gc()を短い間隔で呼び出しています。頻繁なガーベジコレクション実行が、アプリケーションのレスポンスに影響している場合は、System.gc()、Runtime.gc()が必要かアプリケーションの見直しを行ってください。

上記の3つのメッセージの発生条件以外で、ガーベジコレクション処理が短い間隔で発生した場合は、「The garbage collections are run with the short intervals」のメッセージが出力されます。


管理コンソールモニタ機能

Interstage管理コンソールのモニタ機能で、JavaVMの性能情報を参照することができます。予兆監視の警告メッセージで指摘されている問題を解決するための参考情報として、JavaVMの状態を知ることができます。
なお、ワークユニット起動時や一時的に負荷の高い状態の場合、予兆監視のメッセージが出力される場合があります。この場合、Interstage管理コンソールのモニタ画面でJavaVMのヒープ情報およびJavaVMのメタスペース情報に問題がなければ、メッセージを無視してください。

項目

説明

プロセス通番

ワークユニットが起動したプロセスの通番を表示します。

プロセスID

JavaVMのプロセスIDを表示します。

コンテナタイプ

JavaVMのコンテナタイプを「1VM」「Web」または「EJB」で表示します。

JavaVMの運用時間(msec)

JavaVMを起動してからの稼働時間を表示します。

JavaVMのヒープ情報(Kbyte)

JavaVMのヒープ情報を表示します。

現在:ヒープ情報の現在値を表示します。
最小:JavaVM起動時からのヒープ情報の最小値を表示します。
最大:JavaVM起動時からのヒープ情報の最大値を表示します。
上限:JavaVMのヒープサイズの上限値を表示します。上限値は-Xmxオプションで指定したヒープサイズとほぼ同等です。

JavaVMのメタスペース情報(Kbyte)

JavaVMのメタスペースの情報を表示します。メタスペースとは、Javaクラスファイル内の情報等が保存される領域です。

現在:メタスペース情報の現在値を表示します。
最小:JavaVM起動時からのメタスペース情報の最小値を表示します。
最大:JavaVM起動時からのメタスペース情報の最大値を表示します。
上限:JavaVMのメタスペースの上限値を表示します。上限値は-XX:MaxMetaspaceSizeオプションで指定したメタスペースサイズとほぼ同等です。

ガーベジコレクション情報

JavaVMのガーベジコレクション(Full GC)の情報を表示します。

発生回数:JavaVM起動時からのガーベジコレクションの発生回数を表示します。
処理トータル時間(msec):JavaVM起動時からのガーベジコレクションの処理時間の合計値を表示します。
平均ガーベジコレクション発生間隔(msec):JavaVM起動時から前回までに発生したガーベジコレクションの、発生間隔の平均時間を表示します。


予兆監視のチューニング

予兆監視機能の警告メッセージは下記に出力されます。

システムログ/イベントログにEXTP4368を出力させるには、ワークユニットのJavaVMオプションに以下のオプションを設定します。

-Dcom.fujitsu.interstage.j2ee.ijserver.alert-monitoring.syslog=true