最大并发Socket.IO连接数

时间:2013-04-08 06:40:02

标签: websocket socket.io

这个问题之前已被问过,但最近没有问过,也没有明确答案。

使用Socket.io,在您需要添加另一台服务器之前,是否有可以维护的最大并发连接数?

有没有人知道任何大规模使用websockets(特别是socket.io)的活动生产环境?我真的想知道什么样的设置最适合最大连接?

因为Websockets是建立在TCP之上的,所以我的理解是,除非在连接之间共享端口,否则您将受到64K端口限制的约束。但我也看到了512K connections using Gretty的报道。所以我不知道。

5 个答案:

答案 0 :(得分:58)

本文可能会帮助您:http://drewww.github.io/socket.io-benchmarking/

我想知道同样的问题,所以我最后写了一个小测试(使用XHR-polling)来查看连接何时开始失败(或落后)。我发现(在我的情况下)套接字开始在大约1400-1800个并发连接上运行。

这是我做的一个简短的要点,类似于我使用的测试:https://gist.github.com/jmyrland/5535279

答案 1 :(得分:11)

这家伙似乎已成功在单个Node.js服务器上拥有超过100万个并发连接。

http://blog.caustik.com/2012/08/19/node-js-w1m-concurrent-connections/

我不清楚他究竟使用了多少个端口。

答案 2 :(得分:4)

我试图在AWS上使用socket.io,最多可以保持约600个连接稳定。

我发现这是因为socket.io首先使用了长时间轮询,之后又升级到了websocket。

将配置设置为仅使用websocket之后,我可以保持大约9000个连接。

在客户端设置此配置:

async_read

答案 3 :(得分:2)

进行配置后,您可以通过在终端上编写此命令来进行检查

{{1}}

答案 4 :(得分:0)

对于+ 300k并发连接:

/etc/sysctl.conf中设置这些变量:

fs.file-max = 10000000 
fs.nr_open = 10000000

还要在/etc/security/limits.conf中更改这些变量:

* soft nofile 10000000
* hard nofile 10000000
root soft nofile 10000000
root hard nofile 10000000

最后,也增加/etc/sysctl.conf中的TCP缓冲区:

net.ipv4.tcp_mem = 786432 1697152 1945728
net.ipv4.tcp_rmem = 4096 4096 16777216
net.ipv4.tcp_wmem = 4096 4096 16777216

有关更多信息,请参阅https://www.linangran.com/?p=547