Skip to content

メモリ

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

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

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

症状

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

副作用

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

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

症状

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

副作用

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