我一直在使用节点服务器上的 socket.io 为我的网站开发发布功能。在过去一个月左右的时间里,我一直遇到问题,仅运行几天后,套接字连接就变得非常缓慢或完全没有响应。服务器没有内存不足。我对调试这类问题不太熟悉。
除了“websocket 连接无效”或“客户端未握手‘客户端应该重新连接’”之外,socket.io 日志并没有告诉我太多
我四处搜索,最终看到一个线程建议在命令行中运行 netstat,并在 FIN_WAIT2 和 CLOSE_WAIT 中看到大量连接,并认为这是我的问题的原因。在查看了 socket.io github 上的一些线程后,建议升级到分支 0.9.14(我当时一直在运行 0.9.13)。
从那以后我已经这样做了,并且当服务器只连续运行了几天时,我仍然有一段时间的“停机”。我的网站没有接近应该成为问题的流量。
我的日志中开始出现一个新错误(websocket 解析器错误:没有操作码 10 的处理程序),但是我的谷歌搜索已经发现了这个问题。我不确定在哪里可以解决这个问题,或者我是否只是在追寻红鲱鱼,而真正的问题是你们中的一个人可能能够帮助我阐明的其他问题。
我正在运行 node.js v0.10.10 并使用 socket.io v0.9.14。硬重启 linux 服务器将 100% 解决问题,而重启节点服务则不能,这让我相信这是与服务器上打开的套接字有关的问题。