以前有人问过这个问题,但最近没有问过,也没有明确的答案。
使用 Socket.io,在您需要添加另一台服务器之前,是否存在可以维持的最大并发连接数?
有谁知道任何大规模使用 websockets(尤其是 socket.io)的活跃生产环境?我真的很想知道哪种设置最适合最大连接?
因为 Websocket 是建立在 TCP 之上的,所以我的理解是,除非在连接之间共享端口,否则您将受到 64K 端口限制的约束。但我也看到了使用 Gretty 的 512K 连接的报告。所以我不知道。
以前有人问过这个问题,但最近没有问过,也没有明确的答案。
使用 Socket.io,在您需要添加另一台服务器之前,是否存在可以维持的最大并发连接数?
有谁知道任何大规模使用 websockets(尤其是 socket.io)的活跃生产环境?我真的很想知道哪种设置最适合最大连接?
因为 Websocket 是建立在 TCP 之上的,所以我的理解是,除非在连接之间共享端口,否则您将受到 64K 端口限制的约束。但我也看到了使用 Gretty 的 512K 连接的报告。所以我不知道。
本文可能会对您有所帮助:http: //drewww.github.io/socket.io-benchmarking/
我想知道同样的问题,所以我最终编写了一个小测试(使用 XHR 轮询)来查看连接何时开始失败(或落后)。我发现(就我而言)套接字在大约 1400-1800 个并发连接时开始起作用。
这是我做的一个简短的要点,类似于我使用的测试:https ://gist.github.com/jmyrland/5535279
我尝试在 AWS 上使用 socket.io,我最多可以保持大约 600 个连接稳定。
我发现这是因为socket.io首先使用了长轮询,然后升级到了websocket。
在我将配置设置为仅使用 websocket 后,我可以保持大约 9000 个连接。
在客户端设置此配置:
const socket = require('socket.io-client')
const conn = socket(host, { upgrade: false, transports: ['websocket'] })
这个人似乎已经成功地在单个 Node.js 服务器上拥有超过 100 万个并发连接。
http://blog.caustik.com/2012/08/19/node-js-w1m-concurrent-connections/
我不清楚他到底使用了多少个端口。
在继续之前,请阅读此答案的评论
问题询问 socket.io 套接字,答案是本机套接字。这些更改是危险的,因为它们适用于系统上的所有内容,而不仅仅是 socket.io 套接字。此外,今天的网络从来都不是 socket.io 的瓶颈。在不了解其含义之前,请勿对您的系统进行这些更改。
对于 +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
最后,增加 TCP 缓冲区/etc/sysctl.conf
:
net.ipv4.tcp_mem = 786432 1697152 1945728
net.ipv4.tcp_rmem = 4096 4096 16777216
net.ipv4.tcp_wmem = 4096 4096 16777216
有关更多信息,请参阅此。
配置完成后,可以在终端上写这个命令查看
sysctl -a | grep file