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

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 のタイプ)。