调试节点集群中的杂散未捕获异常(ECONNRESET)

时间:2013-06-05 21:41:14

标签: node.js node-cluster

在我使用群集模块的node.js应用中,我间歇性地看到这样的错误:

events.js:71
        throw er; // Unhandled 'error' event
              ^
Error: read ECONNRESET
    at errnoException (net.js:863:11)
    at TCP.onread (net.js:524:19)

这降低了我的整个应用程序,到目前为止,我能够处理这些问题的唯一方法是绑定process.on('uncaughtException')。我想找出根本原因,但上面的堆栈跟踪是没用的。

有没有办法找出造成这些异常的原因?

我应该注意到,我只在群集主服务器中看到这些,而不是工作者,这使我怀疑它们与群集模块在分配与工作人员的连接方面发挥作用的方式有关。

2 个答案:

答案 0 :(得分:1)

这个答案很有帮助:https://stackoverflow.com/a/11542134/233370

基本上,我安装了longjohn然后能够获得完整的异步堆栈跟踪以找出根本原因(在我的情况下是rabbit.js)。

答案 1 :(得分:0)

默认情况下,express似乎启用了keep-alive。 为了在响应后关闭连接,您可以添加 res.set("Connection", "close");

或者,您可以在应用中添加中间件,以便在每次响应后关闭连接:

 app.use(function(req, res, next) {
         res.set("Connection", "close");
         next();
     });