Node.js和Socket.io变得没有响应

时间:2013-05-16 05:57:30

标签: node.js socket.io

我有一个在Node.js和Socket.io上运行的相对简单的聊天类型应用程序。节点服务器从Minecraft服务器流式传输聊天数据,然后使用Socket.io将其流式传输到网站上连接的任何客户端。可以在此处找到系统的工作演示:standardsurvival.com/chat

它在大多数情况下运行得非常好,但每隔一段时间节点服务器就会停止响应,此后不久活动连接就会消失。在此期间,该过程将开始消耗100%的CPU,但内存始终保持相对恒定,因此我怀疑是否涉及任何类型的内存泄漏。

这是非常令人沮丧的,因为我无法始终如一地重现问题以找出问题所在,而且我不知道在哪里看。我一直在设置循环并评论节点服务器和网站之间的管道的各个部分,以试图找出可能导致它的原因。到目前为止还没有运气。

可以找到此系统背后的代码herehere

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

好吧,我最终弄明白问题是什么。我正在使用的库是为Minecraft服务器打开标准HTTP请求的net.Sockets,但实际上从未关闭它们。显然,当请求结束时,“结束”事件从未被调用过。因此,最终所有可用的进程文件句柄都被用完并导致新请求彻底失败,这使得服务器似乎停止响应。如果我记录了这个错误,我会早点发现这个。经验教训。

我为所有套接字添加了超时,以至少暂时解决此问题。现在服务器已经运行了几天而没有一个问题:)