【发布时间】:2011-09-29 10:30:26
【问题描述】:
这周的每一天我都从重启我们的节点服务开始我的工作日。 并且每次它只是简单地退出并显示以下消息:
node.js:134
throw e; // process.nextTick error, or 'error' event on first tick
^
Error: ETIMEDOUT, Connection timed out
at Socket._readImpl (net.js:163:14)
at Socket._onReadable (net.js:633:22)
at IOWatcher.onReadable [as callback] (net.js:177:10)
我无法准确辨别我的代码的哪一部分是导致该错误的原因,以及为什么该错误如此严重以至于导致节点退出。
无论如何,我已经进行了一些搜索,并认为这可能只是一个未捕获的错误事件。 我已经为每个服务器实例添加了一些 on('error') 侦听器,并带有一些自定义日志消息,以确保它被捕获,但无济于事,我今天仍然需要处理常规错误消息。 (真的有必须捕获的“错误”事件吗?)
一个简单的连接超时不应该真的让整个服务崩溃。
该服务的主要目的是保持与许多正在连接的客户端的开放 tcp 连接并能够推出 命令(它很像嵌入式产品的私有僵尸网络)。所以实际上 95% 的时间我们只是在闲置我们的 tcp 套接字并发送保持活动的数据包。 因此要求客户端可以随时断开连接而不会中断 其他连接客户端的服务。
我们正在使用最新的稳定分支节点 v0.4.13-pre 并在 ubuntu 服务器上运行。
【问题讨论】:
-
是的,我遇到了类似的崩溃,但没有合理的解释。我正在运行节点 0.5.8