このトピックでは、Javaエージェントから最高のパフォーマンスを引き出す方法について説明します。診断データ ウィンドウで、デプロイされたアプリエージェントのパフォーマンス統計を表示することができます。

エージェント診断データの表示

エージェント診断データは、アプリサーバーエージェントのパフォーマンスに関する情報を示すものです。コントローラUIのエージェントページから、その データを確認できます。

表示するエージェントが含まれているノードのノードダッシュボードで、Agent Diagnostic Stats サブタブをクリックします。View Diagnostics for all Agents をクリックすると、すべてのエージェントの統計情報が表示されます。

ビジネストランザクションのしきい値

AppDynamicsは、ビジネストランザクションのしきい値に基づいて、遅延、非常に遅い、または停滞トランザクションを識別します。AppDynamicsでは、動的なしきい値に基づく標準偏差の使用を推奨しています。「トランザクションのしきい値」を参照してください。

スナップショット収集のしきい値

スナップショット収集のしきい値により、ビジネストランザクションのスナップショットが収集されるタイミングが識別されます。スナップショットが多すぎるとパフォーマンスに影響することがあるため、スナップショットの収集はプロダクションまたはロードテストシナリオでしっかり検討する必要があります。「トランザクションのしきい値」を参照してください。

推奨スケジュール設定

  • 10件以下のビジネストランザクションのデプロイメントには10分
  • 10~50件のビジネストランザクションのデプロイメントには20分
  • 50~100件のビジネストランザクションのデプロイメントには30分
  • 100件以上のビジネストランザクションのデプロイメントには60分

推奨診断セッション設定

  • 遅延リクエストの設定(%value):20~30
  • エラーリクエストの設定(%value):10 20
  • Apply to all Business Transactions をクリックします。

コールグラフ設定の調整

コールグラフ設定」に記載されており、Call Graph Settings ページからコールグラフ設定を調整できます。

推奨SQLクエリタイムおよびパラメータ

  • Minimum SQL query time をデフォルトの 10 ms から 100 ms に増加。
  • Filter SQL Parameter Values をイネーブルにします。

メモリのモニターリング

リーク検出、オブジェクトインスタンストラッキング、カスタムメモリなど、メモリのモニターリング機能は、メモリ問題をデバッグする際に特定のノードに対してのみ有効にします。自動リーク検出はオンデマンドであるため、指定された期間のみ実行されます。

ヒープの利用(%)が増える期間を観察する場合、オンデマンドのメモリリーク検出を有効にする必要があります。「Java メモリリーク」を参照してください。

エージェントのヒープストレージのモニターリングとシャットダウン

Javaエージェントは、インストゥルメント化されたアプリケーションが使用するヒープストレージをモニターリングし、条件がアプリケーションによるJavaヒープストレージの利用超過を示すと、自らシャットダウンします。エージェントがこうした対策を取るのは、必ずしもエージェントがメモリプレッシャーの原因となっている可能性が高いからではなく(実際には問題の根本的な原因を診断するのに役立ちます)、アプリケーションにとって使用可能なメモリへのプレッシャーを下げる最終的な保護対策として行われます。

ヒープの使用超過には、主に次の理由が挙げられます。 

  • Javaヒープスペースがアプリケーショントラフィックおよびフットプリントに比べて小さすぎる
  • Javaヒープメモリのリーク
  • 不正しきい値が短時間に大量のメモリを消費している

Javaエージェントのヒープストレージのモニターリングは、次のように動作します。エージェントがヒープの利用状況を30秒ごとにチェックします。ヒープの利用が95%を超えていることを検出すると、Javaエージェントはガベージコレクションイベントを確認します。ガベージコレクションが発生したら、再びヒープの利用をチェックします。それでも使用率がしきい値を超えている場合、エージェントは自らシャットダウンし、次のエージェントイベントを記録します。

ERROR HeapShortageMonitor - Agent shutdown triggered because max heap usage percentage reached 

ヒープメモリ使用率がしきい値を超えても、ガベージコレクションが発生しない場合、エージェントは 30 秒後に通常のモニターリングを再開します。ヒープの使用率がしきい値を超えたままの場合、ヒープ不足モニターは以前と同様にガベージコレクションのチェックを再開します。 

Javaエージェントノードを適切に使用することで、ヒープ不足のモニターリングの有効化と過剰なヒープ使用から起こるアクションを管理できます。heap-storage-monitor-enabledはモニターリングの有効化(デフォルトではtrue)を管理し、heap-storage-monitor-shutdown-actionプロパティがトリガーされるアクションを決定します。

  • true:ヒープのしきい値を超過すると、エージェントが無効化。
  • false:しきい値を超えると、警告レベルメッセージがエージェントログに書き込まれ、警告イベントがコントローラに送信される(テキスト「AppDynamics agent has detected shortage of JVM Heap Storage」を伴う AGENT_EVENT のタイプ)。