从外部获取正在运行的节点js的当前堆栈跟踪
我有一个节点应用程序,定期在我的生产服务器上达到100%。 我希望能够发送一个信号给节点进程,这将给我一个堆栈跟踪,所以我可以find问题的代码在哪里。 有没有简单的方法来做到这一点?
我的服务器是Ubuntu 14.04.2,我正在运行节点0.12.2
有一个叫做console.trace()
的函数可以帮助你完成你正在做的事情。
如何在Node.js中打印堆栈跟踪?
在进程上设置一个事件处理程序,用以下代码监视SIG1:
process.on('SIGUSR1', function(){ console.trace });
现在,从terminal发出以下命令,向节点发送SIGUSR1信号:
killall -10 node
我不确定如果堆栈跟踪将回溯到足够有用,它可能只显示在SIG1USRcallback,不知道。 但我认为这会让你更接近。
我能够通过编译我自己的节点和V8版本来获得堆栈跟踪: https : //github.com/joyent/node/issues/25263