Websocket(node.js)连接限制,客户端在达到400-450个连接后断开连接

时间:2015-10-26 08:12:30

标签: node.js performance socket.io

我的 socket.io连接限制存在很大问题。如果连接数超过 400-450连接的客户端(通过浏览器),则用户将断开连接。我增加了 tcp 的软硬限制,但它对我没有帮助。 问题仅适用于浏览器。当我尝试通过 socket-io-client模块从其他 node.js 服务器连接时,我到达 5000个连接的客户端。 对我来说这是一个非常大的问题,完全阻止了我。请帮忙。

更新

我尝试使用标准Websocket库(带有node.js的ws模块),问题类似。我只能联系456个连接的客户端。

更新2

我在几个服务器实例之间划分了连接客户端。每组客户都通过其他端口连接。不幸的是,这种变化对我没有帮助。连接用户的总和与以前一样。

1 个答案:

答案 0 :(得分:1)

您的操作系统可能达到了极限。打开并发文件的数量有安全限制,看一下这个帖子。

https://github.com/socketio/socket.io/issues/1393

更新: 我想扩大这个答案,因为我以前从手机上回答过。建立的每个新连接将在您的节点进程下打开一个新的文件描述符。当然,每个连接都将使用RAM的某些部分。在用完RAM之前,您很可能首先遇到FD限制(但这取决于您的服务器)。

检查您的FD限额:https://rtcamp.com/tutorials/linux/increase-open-files-limit/

最后,我怀疑你的单个客户端并发性没有使用正确的标志来强制新的连接。如果要测试来自一个客户端的并发连接,则需要在Web服务器上设置一个标志:

var socket = io.connect('http://localhost:3000',{'强制新连接':true});