ヘッダーをスキップ
Oracle® JRockit診断およびトラブルシューティング・ガイド
リリースR28
B61438-02
  目次へ移動
目次

前
 
次
 

3 長いレイテンシ

長いレイテンシは、たとえば、全体のパフォーマンスは良好でも、トランザクションベースのアプリケーションで1つのトランザクションがタイムアウトして表面化することがあります。たいていの場合、不均等なパフォーマンスや確定的でないレイテンシに問題があります。

この章では、以下のトピックについて説明します。

3.1 レイテンシを短縮するためのJVMのチューニング

長いレイテンシは、多くの場合、休止時間を短く確定的にするようにアプリケーションがチューニングされていないことを示します。時間のかかるトラブルシューティングや緩和対策の作業を行う前に、JVMをチューニングして休止時間を短くすることを優先してください。休止時間の短さを優先したJVMのチューニングの詳細は、『Oracle JRockitパフォーマンス・チューニング・ガイド』を参照してください。

低いレイテンシと、アプリケーション全体の高いスループットは両立しません。

ガベージ・コレクションの休止時間を長くするか、ガベージ・コレクションを手動でチューニングすることでレイテンシを低く抑えると同時に、全体のスループットを向上できます。詳細は、『Oracle JRockitパフォーマンス・チューニング・ガイド』を参照してください。

3.2 レイテンシの問題のトラブルシューティング

この項では、-Xgc:deterministicおよび-Xgc:pausetimeなどのコンカレント・ガベージ・コレクションにほとんどの場合、関連するレイテンシの問題のトラブルシューティングに関する情報を提供します。

3.2.1 GCのトリガー値が増え続ける

ガベージ・コレクション・トリガー(gctrigger)値は、Javaスレッドがガベージ・コレクションの全プロセスを通してオブジェクト割当てを続行できるようにするため、コンカレント・ガベージ・コレクションの開始時に使用可能であることが必要な空きヒープ領域です。gctrigger値は、コンカレント・ガベージ・コレクション中にヒープが一杯にならないようにするため、実行時に変更されます。

-Xverbose:memdbgオプションの出力を使用するか、フライト・レコーダ・ツールを使用してgctrigger値を監視します。

  • gctrigger値が増え続ける場合は、コンカレント・ガベージ・コレクタに対してアプリケーションの負荷が高すぎます。アプリケーションの負荷を減らしてください。

  • gctrigger値が増え続ける場合は、Javaヒープ・サイズが小さすぎる可能性もあります。ヒープ・サイズを大きくするとこの現象は改善されます。

3.2.2 古いコレクションに対するGCの理由が割当ての失敗である

-Xverbose:memdbgオプションまたはフライト・レコーダ・ツールのどちらかを使用して、古いコレクションに対するガベージ・コレクションの理由を監視します。古いモーストリ・コンカレント・コレクションに対するガベージ・コレクションの通常の理由は、ヒープが一杯であることです。

オブジェクトの割当てに失敗して古いコレクションが頻繁にトリガーされる場合は、gctriggerが低すぎます。-XXgcTriggerオプションを使用してgctriggerを増やすか、またはアプリケーションの負荷を減らしてください。

3.2.3 若いコレクションの休止時間が長い

-Xverbose:gcpauseオプションの出力を使用するか、フライト・レコーダの記録から若いコレクションの休止時間を監視します。

若いコレクションの休止時間が長すぎる場合は、-Xnsオプションを使用してナーサリ・サイズを減らすか、または一世代のガベージ・コレクタを実行します。

3.2.4 確定的モードの休止時間が長い

フライト・レコーダの記録でガベージ・コレクションの休止時間を監視します。長すぎる休止時間の休止時間部分を確認します。Compactionの休止時間部分が長すぎる場合は、目標休止時間を減らします。Mark:Finalの休止時間部分(特に、RefrenceQueuesに関する休止時間部分)が長すぎる場合、アプリケーション内のjava.lang.ref.Referenceオブジェクトが多いことが問題の原因である可能性があります。使用する参照オブジェクトの数を減らすようにJavaアプリケーションを再設計します。また、ヒープ・サイズを減らしてみることもできます。それによって、参照オブジェクトを処理する頻度が上がる一方、古いコレクションが行われるたびに処理する参照オブジェクトの量は減少します。

3.3 Oracleサポートへの連絡

この項に示されている解決策を試してもパフォーマンスの低下を解決できない場合は、第9章「サポートに関するオラクルへの連絡」の説明に従ってOracleサポートにご連絡ください。