node.js アプリで発生する、非常に遅いが永続的なネイティブ メモリ リークを突き止めようとしましたが、戦略が尽きてしまいました。
プロセスにはレベル ヒープのように見えるものがありますが、数時間と数日が経過するにつれて、node.js プロセスの RSS はゆっくりと大きくなります。このプロセスは、異なるパラメーターに対して同じタイプのジョブを何度も実行するジョブ ハンドラーです。プロセスの RSS の増加は、実行されたジョブの累積数をプロットした線と同じ形をとっているため、ジョブの実行ごとに多少のメモリ リークが発生しています。
ヒープは多かれ少なかれ一定であるため、標準のヒープ検査ツールはあまり役に立たないようです。
メモリ消費量の例を次に示します。
現在、ノード 0.8.7 で実行されています。各ジョブは、多数のデータベースの読み取り/書き込みを行い、redis インスタンスと通信し、mikael/request を使用していくつかの Web 要求を行います。