偶尔的 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 错误的主要内容,如果未能解决你的问题,请参考以下文章
docker mysql 出现错误:连接 ECONNREFUSED
尝试构建管道时 SonarQube 错误 ECONNREFUSED