我正在尝试使用heapdump拍摄节点的一些堆快照

按照https://blog.risingstack.com/finding-a-memory-leak-in-node-js/

将USR2发送到具有所需heapdump的节点进程时,应触发heapdump将堆快照保存到工作目录中。

在我的本地服务器上(在Mac上运行),效果很好。在AWS ubuntu服务器上,USR2终止进程。我也尝试过SIGUSR2。

有谁知道为什么“ sudo kill -USR2”会杀死进程而不是触发堆快照?

最佳答案

发生这种情况的原因有两个:


在某些发行版中,kill代码是USR2,在其他发行版中则是SIGUSR2。您需要运行kill -l来检查发行版支持的版本。
require('heapdump')在当前工作程序中不执行。因此,如果您使用节点cluster模块,则需要在当前工作程序中要求heapdump,即


如果(worker.isMaster){
   / *主要内容* /
}其他{
    要求('heapdump')
}

关于node.js - nodejs USR2信号使用heapdump终止进程,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36925909/

10-09 08:12