debugging节点,什么使它保持运行?
我有一个为Node.Js编写的脚本,收集数据的负载,处理它,保存,然后完成。 不幸的是我所做的是阻止脚本完成和节点closures,而是保持打开状态。
我可能只是通过我所做的更改,并试图追踪它,但是…有一个简单的方法来debugging节点,找出什么代码/事件/callback/连接或什么的,这是等待?
我已经看了一下node-inspector,但是我不知道如何查找任何可以打开的东西。 有什么build议?
你可以使用wtfnode运行你的node.js程序,或者添加require('wtfnode').init();
在第一行或你的程序。 然后,当你按ctrl + c来杀死进程时,它将打印所有保持节点打开状态的列表。
当我遇到这种情况时,最常见的就是mongodb,amqp等。这就是数据库连接,networking连接。 确保你完成处理后closures这些。
我想你可以使用lsof -p <PID>
,看看有什么说的。 在那里我可以看到mongodb和amqp。
在你期望它closures添加点
console.log(process._getActiveHandles());
你也可以添加一个处理程序
process.on('SIGINT', () => console.log(process._getActiveHandles()) );
所以如果节点没有正确closures,Ctrl + C会告诉你为什么。
- 多个处理器上的NodeJS(PM2,群集,重新群集,无)
- out参数结果由节点pg module – postgresql返回
- mongoose document.validate在从4.4x更新到^ 4.5.1之后抛出RangeError
- mongoose批量保存与承诺
- Nodejs和Tomcat监听相同的端口号,这是可能的
- 通过云端function访问Gmail API
- 为什么在使用MongoDB的$ push将新对象添加到数组时,为什么添加了ObjectID的_id?
- Grunt:使用不同的环境/stream程运行多个摩卡testing
- nodejs socket.io什么都不做,只是连接100%cpu