予兆監視として、以下の機能を提供します。
JavaVMのメモリ割り当てプールおよびPerm領域を監視して、Javaヒープ領域不足の危険性を警告メッセージ(EXTP4368)で通知する機能を提供します。
参考
Javaヒープ領域は、メモリ割り当てプール(New世代領域とOld世代領域)およびPerm世代領域に大別されます。以下の説明で、単に「ヒープ領域」と記載している場合は、メモリ割り当てプールを指します。Javaヒープの構造については、「チューニングガイド」の「JDK/JREのチューニング」の「基礎知識」を参照してください。
JavaVMのガーベジコレクション処理の影響で業務レスポンス低下が発生する可能性を検出し、警告メッセージ(EXTP4368)で通知する機能を提供します。
JavaVMの性能情報をInterstage管理コンソールのモニタ機能で参照できます。
警告メッセージはイベントログに出力されます。
注意
JavaVMのヒープ領域使用量、および、Perm領域使用量が、短時間、かつ、急激に増加した場合、予兆監視の警告メッセージが出力されない場合があります。この場合、イベントログに、メモリ不足を示すメッセージが出力されていますので、そのメッセージに従い対処を行ってください。
Interstage Application Serverが提供するJavaVM以外を使用した場合、予兆監視、および、Interstage管理コンソールのモニタ画面におけるJavaVMのPerm領域情報やガーベジコレクション情報は利用できません。また、JavaVMのヒープ情報(Kbyte)の最小、最大、上限は、状態の再取得時における最小、最大、上限となります。
Interstage Application Serverが提供するJavaVM以外を使用した場合、Interstage管理コンソールのモニタ画面で、以下の情報が常に0と表示されます。
JavaVMのPerm領域情報(byte)の現在、最小、最大
ガーベジコレクション情報の発生回数、処理トータル時間(msec)、平均ガーベジコレクション発生間隔(msec)
ガーベジコレクション情報は、Full GCの情報を使用しています。
予兆監視警告メッセージ (Javaヒープ領域)
JavaVMのメモリ割り当てプールおよびPerm領域を監視して、Javaヒープ領域不足の危険性を警告メッセージ(EXTP4368)で通知します。
参考
Javaヒープ領域は、メモリ割り当てプール(New世代領域とOld世代領域)およびPerm世代領域に大別されます。以下の説明で、単に「ヒープ領域」と記載している場合は、メモリ割り当てプールを指します。Javaヒープの構造については、「チューニングガイド」の「JDK/JREのチューニング」の「基礎知識」を参照してください。
ヒープ領域およびPerm領域の問題を通知する警告メッセージ(EXTP4368)には3種類のメッセージがあり、EXTP4368の詳細メッセージで示されます。この他の詳細メッセージは、「予兆監視警告メッセージ (ガーベジコレクション)」を参照してください。
メッセージは、以下の基準で出力されます。
詳細メッセージ | 警告の意味 | 発生条件 (注1) |
---|---|---|
There are possibilities of OutOfMemoryError because of the lack of the memory: TIME={0} SIZE={1} | ヒープ領域不足のため、OutOfMemoryError発生する危険性があります。 | ガーベジコレクション直後のヒープ使用率が95%より大きい場合。または、 |
There are possibilities of OutOfMemoryError because of the lack of the Perm region: TIME={0} SIZE={1} | Perm領域不足のため、OutOfMemoryErrorが発生する危険性があります。 | Perm領域の使用量が90%より大きい場合。 |
OutOfMemoryError warning is occured because the Perm region is exhausted: TIME={0} SIZE={1} | Perm領域の使用量が急増しているため、OutOfMemoryErrorが発生する危険性があります。 | 前回の測定からのPerm領域の使用量の増加が、Perm領域全体の1割より大きく、かつ、次も同じ割合で増えると仮定したときのPerm領域の使用率が、90%より大きい場合。 なお「SIZE」として通知している値は、同じ割合で増えると仮定した際に用いた大きさ(増加量)です。 |
注1) ガーベジコレクションは、Full GCの情報を使用しています。
注2) 警告を回避するためには、警告発生時のヒープ領域またはPerm領域のサイズを大きくする必要があります。「SIZE」として通知している値は、そのための目安となる追加量です。
なお「SIZE」として通知している値は、あくまで目安です。実際に必要な追加量とは異なる場合がありますので、不足リソースの情報を元に、きちんとチューニングを実施してください。
警告メッセージ(Javaヒープ領域不足)の原因と対処
EXTP4368(Javaヒープ領域不足の警告メッセージ)が出力される原因は、JavaVMによってあらかじめ予約されたヒープ領域またはPerm領域の不足です。予約するヒープ領域、Perm領域のサイズが不適切な場合や、Javaアプリケーションがメモリリークを起こしている可能性があります。
警告メッセージが出力された場合、そのまま業務を継続するとメモリ不足やレスポンス低下などの問題が発生する可能性があります。これらの問題を解決するために警告メッセージに記載されている不足リソースの情報を元にチューニングを実施してください。
警告を回避するためには、現在の上限値を20%増加させて運用を再開します。それでも警告が出力された場合にはさらに20%増加させ、警告が出力されなくなるまで繰り返しチューニング実施します。チューニングを繰り返して警告メッセージが出力されない状態とすることにより、安定稼動するシステムを構築することができます。ヒープ領域サイズとPerm領域サイズの上限値を増加しても回避できない場合は、Javaアプリケーションが大量にメモリを消費したり、メモリリークを起こすことがないか見直しを行ってください。
JavaVMのヒープ領域およびPerm領域をチューニングする場合、Interstage管理コンソールのワークユニット設定でJavaVMオプションに、ヒープ領域およびPerm領域の上限値を設定するオプションを記載します。
JavaVMのヒープ領域の上限値を設定するためには、-Xmxオプションを使用します。
例
JavaVMのヒープ領域の上限値を256MByteに設定する場合
-Xmx256m
また、JavaVMのPerm領域の上限値を設定するためには、-XX:MaxPermSizeオプションを使用します。
例
JavaVMのPerm領域の上限値を128MByteに設定する場合
-XX:MaxPermSize=128m
なお、チューニングは開発フェーズ(システムテスト)で実施し、問題を解決してください。
また、チューニング方法には、上記に挙げたヒープ領域またはPerm領域を増加する方法の他に、IJServerのプロセス多重度を増加することにより問題を解決することもできます。
予兆監視警告メッセージ (ガーベジコレクション)
JavaVMのガーベジコレクション処理の影響で業務レスポンス低下が発生する可能性を検出し、警告メッセージ(EXTP4368)で通知します。
JavaVMのガーベジコレクションの影響を通知する警告メッセージ(EXTP4368)には以下の5種類があり、EXTP4368の詳細メッセージで示されます。この他の詳細メッセージは、「予兆監視警告メッセージ (Javaヒープ領域)」を参照してください。
警告メッセージは、ガーベジコレクション処理による業務レスポンス低下の危険性を通知するもので、JavaVMの動作異常を示すものではありません。また、警告が出力された状態で業務を継続したときに、Javaアプリケーションの実行に支障が発生すると一概に言えませんが、警告メッセージが出力されない状態にすることにより、安定稼動するシステムを構築することができます。
ガーベジコレクション処理時間に関する警告メッセージ
メッセージは、EXTP4368の詳細メッセージで示されます。また、以下の基準で出力されます。
詳細メッセージ | 警告の意味 (注) | 発生条件 |
---|---|---|
It takes long time to do the garbage collections many times: TIME={0} AVERAGE={1} | ガーベジコレクションに長い時間かかる状態が続いています。 | 過去3回のガーベジコレクション時間の平均値が5秒より長い場合。 |
注) ガーベジコレクションは、Full GCの情報を使用しています。
ガーベジコレクション処理中は、メッセージに記載された平均ガーベジコレクション時間のあいだ、アプリケーションが停止する場合があります。メッセージが出力された場合、レスポンス低下などの問題が発生する可能性があります。
警告メッセージ(ガーベジコレクション処理時間)の原因と対処
EXTP4368(ガーベジコレクション処理時間に関する警告メッセージ)が出力される原因として以下が考えられます。
物理メモリの枯渇など、システムのリソースが不足している。
CPU負荷の高い別のアプリケーションが同時に動作しているなど、メッセージの対象となったJavaプロセスの実行が阻害されている。
ヒープ領域のサイズ指定が大き過ぎて、ガーベジコレクション処理に時間を要している。
アプリケーションのレスポンスに問題がある場合は、これらの要因を確認してください。
ヒープ領域のサイズ指定を小さくするチューニングは、十分な検証が必要です。Javaアプリケーションがヒープ領域を多く消費するプログラムの場合、ヒープ領域のサイズ指定を小さくするとOufOfMemoryErrorが発生することも考えられます。
ガーベジコレクション間隔に関する警告メッセージ
ガーベジコレクション間隔に関する4種類のメッセージは、EXTP4368の詳細メッセージで示されます。いずれも、ガーベジコレクションが短い間隔で連続して発生した場合に、以下の基準で出力されます。
詳細メッセージ | 警告の意味 (注1) | 発生条件 (注2) |
---|---|---|
Inefficent garbage collections are run with the short intervals: TIME={0} WEIGHT={1} | 非効率なガーベジコレクションが短い間隔で発生しています。 (注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} | ヒープ領域不足のため、ガーベジコレクションが短い間隔で発生しています。 | 過去3回のガーベジコレクション間隔時間が20秒より短い場合、かつ、ガーベジコレクション直後のヒープ使用率が65%より大きい場合。 |
System.gc() are run with the short intervals: TIME={0} INTERVAL={1} | System.gcが短い間隔で発生しています。 | 過去3回のガーベジコレクション間隔時間が20秒より短い場合、かつ、System.gcによって発生したGCの頻度が高い場合。 |
The garbage collections are run with the short intervals: TIME={0} INTERVAL={1} | ガーベジコレクションが短い間隔で発生しています。 | 過去3回のガーベジコレクション間隔時間が20秒より短い場合。 |
注1) ガーベジコレクションは、Full GCの情報を使用しています。
注2) 発生条件を満たした場合でも、ガーベジコレクションの処理時間が短い場合は、メッセージの出力を行わない場合があります。
注3) IJServerワークユニットでは、コネクタとServletコンテナ間の通信にSSLを使用する設定になっている場合、ワークユニット起動時に、このメッセージを含んだメッセージが出力される場合があります。この場合、起動後にInterstage管理コンソールのモニタ画面でJavaVMのヒープ情報およびJavaVMのPerm領域情報に問題がなければ、メッセージを無視してください。
注4) 警告を回避するためには、警告発生時のヒープ領域のサイズを大きくする必要があります。「SIZE」として通知している値は、そのための目安となる追加量です。
なお「SIZE」として通知している値は、あくまで目安です。実際に必要な追加量とは異なる場合がありますので、不足リソースの情報を元に、きちんとチューニングを実施してください。
頻繁なガーベジコレクション処理の実行は、アプリケーションのレスポンス低下などの問題が発生する可能性があります。
警告メッセージ(ガーベジコレクション間隔)の原因と対処
「Inefficent garbage collections are run with the short intervals」が出力された場合、ヒープ領域の空きがあるにもかかわらず、ガーベジコレクション処理(非効率なガーベジコレクション)が発生している可能性があります。原因として以下が考えられます。
アプリケーションがSystem.gc()、Runtime.gc()を短い間隔で呼び出している(製品のバージョンによって、「System.gc() are run with the short intervals」が出力されることがあります)。
ヒープ領域の初期サイズ(-Xms)が小さく、ヒープ拡張を繰り返している。
ヒープ領域のNew世代領域の割合が大きくなるように指定している(New世代領域については、「チューニングガイド」の「JDK/JREのチューニング」の「基礎知識」を参照してください)。
アプリケーションのレスポンスに問題がある場合は、これらの要因(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のPerm領域情報に問題がなければ、メッセージを無視してください。
項目 | 説明 |
---|---|
プロセス通番 | ワークユニットが起動したプロセスの通番を表示します。 |
プロセスID | JavaVMのプロセスIDを表示します。 |
コンテナタイプ | JavaVMのコンテナタイプを「1VM」「Web」または「EJB」で表示します。 |
JavaVMの運用時間(msec) | JavaVMを起動してからの稼働時間を表示します。 |
JavaVMのヒープ情報(Kbyte) | JavaVMのヒープ情報を表示します。 現在:ヒープ情報の現在値を表示します。 |
JavaVMのPerm領域情報(Kbyte) | JavaVMのPerm領域の情報を表示します。Perm領域とは、Javaクラスファイル内の情報等が保存される領域です。 現在:Perm領域情報の現在値を表示します。 |
ガーベジコレクション情報 | JavaVMのガーベジコレクション(Full GC)の情報を表示します。 発生回数:JavaVM起動時からのガーベジコレクションの発生回数を表示します。 |