2013-02-05 9 views
5

のサイズにもかかわらず、私のメモリ使用量は時間の経過とともに忍び寄る:Node.jsのメモリリークが、一定のヒープ+ RSS私のサーバーの監視によると

enter image description here

稼働時間の〜4週間後、それが原因となって終わります問題/クラッシュ(EC2のm1.largeインスタンス=> 8GB RAM、RAMは約1.5GB /週で増加しているように見えるので、理にかなっています)。

node.jsアプリケーションを再起動すると、メモリ使用率がリセットされます。 しかし...私はprocess.memoryUsage()を経由して、私のメモリ使用量を追跡するんだ、とさえ〜1週間後、私は私が何をしないのです

{"rss":"693 Mb","heapTotal":"120 Mb","heapUsed":"79 Mb"} 

を見ていますか?明らかにノードのリークはノードにありますが、プロセスはそれを認識していないようです...

+0

あなたはノードのクラスタモジュールを使用しています:

ヒープdiffはのようになりますか?おそらく、報告されたメモリ使用量は、子プロセスの1つに属しています。また、どのプロセスがps/topを使ってそのメモリをすべて使用しているかを検証しましたか?使用しているnode.jsのバージョンは何ですか? – samitny

+0

実際のコードなしでは答えられません。しかし、https://nodetime.com/を試して、メモリリークを調べることができます。 rssサイズの高いクラスタを再起動することができます。どちらが非常に汚い解決策です。 – egiray

答えて

1

node-memwatchモジュールでは、ノードのリーク検出とヒープディフュージョンに役立ちます。

{ 
    "before": { "nodes": 11625, "size_bytes": 1869904, "size": "1.78 mb" }, 
    "after": { "nodes": 21435, "size_bytes": 2119136, "size": "2.02 mb" }, 
    "change": { "size_bytes": 249232, "size": "243.39 kb", "freed_nodes": 197, 
    "allocated_nodes": 10007, 
    "details": [ 
     { "what": "String", 
     "size_bytes": -2120, "size": "-2.07 kb", "+": 3, "-": 62 
     }, 
     { "what": "Array", 
     "size_bytes": 66687, "size": "65.13 kb", "+": 4, "-": 78 
     }, 
     { "what": "LeakingClass", 
     "size_bytes": 239952, "size": "234.33 kb", "+": 9998, "-": 0 
     } 
    ] 
    } 
関連する問題