即使使用率保持不变,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将堆加载到其分析工具中,并开始检查。
我通常发现这些问题需要等待外部请求太久。