我一直试图在 node.js 应用程序中追踪一个非常缓慢但持久的本机内存泄漏,并且我已经用完了策略。
该进程看起来像是一个级别堆,但随着时间的推移,node.js 进程的 RSS 缓慢增长。该进程是一个作业处理程序,它一遍又一遍地为不同的参数运行相同类型的作业。进程 RSS 的增长与绘制作业运行的累积数量的线具有相同的形状,因此每个作业运行都会以某种方式泄漏一些内存。
由于堆或多或少是恒定的,标准堆检查工具似乎没有太大帮助。
这是内存消耗的示例:
当前在节点 0.8.7 上运行。每个作业都会执行一些数据库读取/写入,与 redis 实例通信,并使用 mikael/request 执行一些 Web 请求。