Skip to content

メモリ

このドキュメントでは、メモリ関連の問題をデバッグする方法について学ぶことができます。

プロセスがメモリ不足になる

Node.js (JavaScript) はガベージコレクション言語なので、リテイナーを通じてメモリリークが発生する可能性があります。Node.jsアプリケーションは通常、マルチテナント、ビジネスクリティカル、および長時間実行されるため、メモリリークを見つけるためのアクセス可能で効率的な方法を提供することが不可欠です。

症状

ユーザーは、継続的に増加するメモリ使用量(高速または低速、数日または数週間)を観察し、プロセスがクラッシュしてプロセスマネージャーによって再起動されるのを確認します。プロセスは以前よりも遅く実行されている可能性があり、再起動により一部のリクエストが失敗します(ロードバランサーが502で応答)。

副作用

  • メモリ枯渇によるプロセスの再起動と、リクエストの破棄
  • GCアクティビティの増加により、CPU使用率が高くなり、応答時間が遅くなる
    • GCがイベントループをブロックし、速度が低下する
  • メモリのスワップが増加すると、プロセス(GCアクティビティ)が遅くなる
  • ヒープスナップショットを取得するための十分なメモリがない可能性がある

プロセスがメモリを非効率的に利用している

症状

アプリケーションが予期しない量のメモリを使用している、および/またはガベージコレクターのアクティビティが上昇しているのが観察されます。

副作用

  • ページフォルトの数の増加
  • GCアクティビティとCPU使用率の上昇