socket.io 中的连接限制

Posted

技术标签:

【中文标题】socket.io 中的连接限制【英文标题】:Connection limit in socket.io 【发布时间】:2016-10-24 23:09:00 【问题描述】:

使用带有 socket.io 的 nodejs 服务器和客户端,我可以让 14k 客户端连接。 即使在使用集群时也略少。

CPU 或 RAM 均未耗尽。除了 socket.io 自己执行的自动 ping 之外,不会传输任何数据。

传输设置为仅使用“websocket”,不进行轮询!

更多的客户端只是因为“超时”而失败。

是什么原因造成的?

如果机器不够强大,我可以理解。但是我希望服务器无论如何都会随机丢弃客户端,而不是每次尝试时都停留在特定数量。

编辑:这是在使用 Web Storm 的 Windows 上,我会尽可能在 Linux 机器上进行测试。

【问题讨论】:

也许这个socket.io问题与你的问题有关:github.com/primus/primus/issues/355 很遗憾,没有,另一个使用普通 tcp 套接字用 c# 编写的程序没有这个问题。此外,当我使用聚类时,数量会无缘无故地降低。 【参考方案1】:

我在使用 socket.io 测试 https://www.codiva.io 时遇到了类似的问题。问题在于打开文件描述符的数量以及端口数量的限制。它在 Ubuntu Linux 中,默认限制在 4k 左右。 这可能与此有关。

【讨论】:

在我正在测试的 windows 机器上,当我用 c# 编写服务器和客户端时,我能够打开 16k+ 连接。

以上是关于socket.io 中的连接限制的主要内容,如果未能解决你的问题,请参考以下文章

Socket.io 睡眠一些客户端

Socket.IO 中的跨域连接

socket.io:关于广播和最大连接的查询

Socket.io 中的连接不稳定

Phaser.js 中的 Node.js 和 Socket.io 未连接 socket.io/?EIO=3&transport=polling

如何访问socket.io连接中的会话对象[重复]