偶尔的 ECONNREFUSED 错误

Posted

技术标签:

【中文标题】偶尔的 ECONNREFUSED 错误【英文标题】:Occassional ECONNREFUSED errors 【发布时间】:2012-05-09 06:46:16 【问题描述】:

我刚开始使用 nodejs 并使用它来创建服务器。客户端使用 socket.io 连接到它,接收作业进行处理,并将结果发送回 nodejs 服务器。

但是服务器偶尔会崩溃并出现以下错误:

node.js:201
    throw e; // process.nextTick error, or 'error' event on first tick
          ^
Error: connect ECONNREFUSED
    at errnoException (net.js:614:11)
    at Object.afterConnect [as oncomplete] (net.js:605:18)

我不知道是什么原因造成的。

【问题讨论】:

你能分享你的源代码吗? 哪里是发布源代码的好地方?不过,我希望能够在一段时间后将其取下来 我们的意思是发布与错误相关的代码块。看到你有 1k 的声誉,我很惊讶你不熟悉发布代码示例。 抱歉我的无知,但我无法判断我的代码的哪一部分导致了错误。 net.js 可能是 node.js 自带的,不是我写的…… 【参考方案1】:

ECONNREFUSED 表示您尝试与另一台计算机建立连接,但您的连接被拒绝 - 要么没有人在监听,要么防火墙阻止了您。

我已经使用 http 看到了这种情况,但我认为使用直接套接字也可能发生这种情况。

【讨论】:

防火墙通常会产生超时,而不是ECONNREFUSED 我的防火墙在工作时遇到了 ECONNREFUSED。但是您的情况可能会有所不同 我使用过几十个防火墙 - 大多数会黑洞入站流量,而不是发回虚假的ECONNREFUSED 您认为客户发送ECONNREFUSED 的原因是什么?系统重启? 实际上,我刚刚得到了一个,因为我尝试连接的 http 服务器没有运行......这意味着没有人在听【参考方案2】:

每当您调用的服务器拒绝连接时,您可能正在为 node.js 死机而苦苦挣扎。试试这个:

process.on('uncaughtException', function (err) 
    console.log(err);
); 

它只会记录错误并保持您的服务正常运行。

【讨论】:

不幸的是,这种快速修复可能非常危险。请参阅uncaughtException 上的节点文档:nodejs.org/api/process.html#process_event_uncaughtexception

以上是关于偶尔的 ECONNREFUSED 错误的主要内容,如果未能解决你的问题,请参考以下文章

获取请求失败并出现错误:连接 ECONNREFUSED

docker mysql 出现错误:连接 ECONNREFUSED

node.js mysql错误:ECONNREFUSED

尝试构建管道时 SonarQube 错误 ECONNREFUSED

Laravel Echo Server 给出错误未处理错误事件:错误:连接 ECONNREFUSED

Node.js 错误:连接 ECONNREFUSED