Kiv*_*iva 5 memory-leaks production-environment node.js
我在生产中有一个 nodejs 应用程序,我有内存泄漏(内存在 3 天内从 600Mo 增加到 3Go)。
我搜索了一些工具来进行内存转储,但我只找到了需要在应用程序中写入转储的插件。
当然,我不能停止我的应用程序并重新启动它(修改后)以获取快照,我想使用外部工具在节点外进行内存转储。
你知道这样的工具吗?
谢谢。
您可以通过两种方式创建一个(或更好的几个)堆转储,修改代码或不修改代码。
require('heapdump');在代码的开头添加。kill -USR2 {{pid}}从终端执行,或从代码执行process.kill(process.pid, 'SIGUSR2');heapdump-XXX.YYY.heapsnapshot文件,您可以将这些文件与 Chrome Dev Tools 进行比较。kill -USR1 {{pid}}. 请注意,这将启用调试模式,导致过程中出现明显的“冻结”。node-inspector(通过执行全局安装后可能npm install -g node-inspector)http://0.0.0.0:8080/debug?port=5858在谷歌浏览器中打开(节点检查器使用8080端口,调试器使用5858端口),这将导致进程“解冻”Snapshot X文件,可以与 Chrome Dev Tools 进行比较。