1. ホーム
  2. node.js

[解決済み] node.jsの正しい "max-old-space-size "はどのように決定するのですか?

2022-03-06 09:58:18

質問

Node.jsがパラメータ max-old-space-size .

私の場合、例えば、2つの t2.small AWSインスタンス(RAM2GB)。

なぜかわからないが max-old-space-size=4096 (4GB)です。この場合、nodeはどのような動作をするのでしょうか?この構成では、メモリの割り当てに失敗する可能性があるのでしょうか?

の正しい値はどのように決定すればよいのでしょうか? max-old-space-size サーバーのリソースに基づいていますか?

私のアプリケーションは常にメモリ使用量を増やしており、ノード内部についてすべてを理解しようとしています。

どのように解決するのですか?

古いスペースは、V8 の管理されたヒープ(別名ガベージコレクション)の中で最も大きく、最も設定しやすいセクションです(つまり、JavaScript オブジェクトが存在する場所)。 --max-old-space-size フラグはその最大サイズを制御します。メモリ消費量が上限に近づくと、V8 は未使用メモリを解放するためにガベージコレクションに多くの時間を費やします。

ヒープメモリの消費量(つまりGCが解放できないライブオブジェクト)が制限を超えると、V8は(代替手段がないために)プロセスをクラッシュさせるので、あまり低い値を設定しないようにしましょう。もちろん、高すぎる場合は、V8が許容する追加のヒープ使用によって、システム全体のメモリが不足する可能性があります(代替手段がないため、スワップするか、ランダムなプロセスを殺すかします)。

まとめると、2GBのメモリを搭載したマシンでは、おそらく --max-old-space-size を約1.5GBに設定して、他の用途のためにメモリを残し、スワップを回避します。