从外部获取正在运行的节点js的当前堆栈跟踪

时间:2015-05-06 16:19:27

标签: node.js

我的节点应用程序在我的生产服务器上定期达到100%。我希望能够向节点进程发送一个信号给我一个堆栈跟踪,这样我就能找到代码中的问题所在。 有没有简单的方法呢?

我的服务器是ubuntu 14.04.2,我正在运行节点0.12.2

2 个答案:

答案 0 :(得分:1)

有一个名为console.trace()的功能可以帮助您完成您想要做的事情。

How to print a stack trace in Node.js?

使用以下代码在进程上设置事件处理程序以监视SIG1:

process.on('SIGUSR1', function(){   console.trace   });

现在,从终端发出以下命令,向Node发送SIGUSR1信号:

killall -10 node

我不确定堆栈跟踪是否会回溯到足以使您有用,它可能只是在SIG1USR上显示回调,不确定。但我认为这会让你更接近。

答案 1 :(得分:1)

通过编译我自己的节点版本和v8,我能够获得堆栈跟踪: https://github.com/joyent/node/issues/25263