7

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

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

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

4

2 回答 2

1

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

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

于 2013-06-05T22:07:39.633 回答
0

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

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

 app.use(function(req, res, next) {
         res.set("Connection", "close");
         next();
     });
于 2015-10-27T16:12:46.780 回答