【问题标题】:Debugging stray uncaught exceptions (ECONNRESET) in a node cluster调试节点集群中的杂散未捕获异常 (ECONNRESET)
【发布时间】:2013-06-01 18:29:11
【问题描述】:

在使用集群模块的 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')。我想找出根本原因,但上面的堆栈跟踪毫无用处。

有什么方法可以找出导致这些异常的原因吗?

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

【问题讨论】:

标签: node.js node-cluster


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2011-10-02
      • 2014-06-03
      • 2019-04-28
      • 2011-09-02
      • 2015-03-12
      • 2010-10-16
      • 2014-05-11
      • 2023-04-07
      • 1970-01-01
      相关资源
      最近更新 更多