我正在尝试使用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/