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 中的连接限制的主要内容,如果未能解决你的问题,请参考以下文章
Phaser.js 中的 Node.js 和 Socket.io 未连接 socket.io/?EIO=3&transport=polling