メモリ使用量ヘルスチェックコンポーネント設計

Node.js、Java、Goアプリケーションのヒープ使用量、ガベージコレクション圧力、メモリしきい値を監視するメモリ使用量ヘルスチェックコンポーネントを設計します。

Component Checks

詳細な説明

メモリ使用量ヘルスチェック

メモリヘルスチェックは、メモリリークや過剰なメモリ消費がOOM(Out-of-Memory)キルやパフォーマンス低下を引き起こす前に検出します。

レスポンスコンポーネント

{
  "memory": {
    "status": "UP",
    "duration": "1ms",
    "message": "Memory usage within limits",
    "details": {
      "heapUsed": "256MB",
      "heapTotal": "512MB",
      "rss": "580MB",
      "utilization": "50%"
    }
  }
}

メモリしきい値

メトリクス 健全 劣化 異常
ヒープ使用率 < 75% 75-90% > 90%
RSS増加率 安定 緩やかな増加 急速な増加
GCポーズ時間 < 50ms 50-200ms > 200ms

Livenessプローブに含める理由

メモリチェックはLivenessプローブに適した数少ない依存関係的チェックの一つです。ヒープ使用率が90%を超えるメモリリークは通常、回復に再起動が必要であり、これはLivenessプローブがトリガーするように設計されている動作です。

コンテナメモリとアプリメモリ

コンテナ化環境では、両方をチェックします:

  • アプリケーションヒープ: ランタイムの管理メモリ
  • コンテナ制限: Kubernetesが設定したcgroupメモリ制限

アプリがヒープの60%を使用していても、ネイティブメモリ、スレッドスタック、メモリマップファイルによりコンテナ制限の95%を使用している場合があります。

ユースケース

メモリリークが徐々にパフォーマンスを低下させる可能性がある長時間稼働のNode.js、Java、Pythonサービス。特にOOMキルがサービス可用性を中断するKubernetes環境。

試してみる — Health Check Endpoint Designer

フルツールを開く