即使使用率保持不变,Node.JS V8堆也会快速增长

我正在运行一个Node.JS的Web应用程序,工作几个小时,然后在一些随机的时间点,V8堆突然开始迅速增长,没有任何理由,大约40分钟后,这种增长通常停止,进程继续正常运行。

我用nodetime监视这个:

这可能是什么原因? 在我的程序中是内存泄漏还是V8中的一个bug?

没有办法知道你提供的是什么问题,但是有99.99%的机会出现在你的代码中。

我发现用Node.jsdebugging内存问题的最佳工具是https://github.com/bnoordhuis/node-heapdump ,你可以设置它来转储一定的时间间隔,或者默认情况下它会监听USR2信号,所以你可以发送kill -s USR2到你的进程的PID并获得快照。

然后,您可以使用Chrome Inspector将堆加载到其分析工具中,并开始检查。

我通常发现这些问题需要等待外部请求太久。