node.js アプリの RSS (Resident Set Size) が時間の経過とともに大きくなっていることに気付きました。サーバーで「JS オブジェクトの割り当てに失敗しました - メモリ不足」というエラーが発生していることを考えると、それが原因である可能性が高いようです。
次の非常に単純な Node アプリをセットアップしました。
var express = require('express');
var app = express();
app.get('/',function(req,res,next){
res.end(JSON.stringify(process.memoryUsage()));
});
app.listen(8888);
「更新」ホットキー @ http:// localhost:8888/ を押し続けるだけで、RSS/heap/etc を監視できます。RSS が 50MB をはるかに超えるまで (飽きる前に) 成長させます。数分待ってから戻ってくると、RSS がドロップします。おそらく GC が実行されています。
これが私の実際のノードアプリがクラッシュする理由を説明しているかどうかを理解しようとしています...私の本番アプリはすぐに約100MbのRSSサイズに達します.クラッシュすると、通常は200Mb-300Mbになります. 私が知る限り、これは大きすぎてはいけません (ノードは 1.7Gb 程度を処理できるはずです) が、それにもかかわらず、運用サーバーの RSS サイズが増加傾向にあるという事実 (フォールオフクラッシュを表します):