websocket 最大并发Socket.IO连接数

62lalag4  于 2023-01-09  发布在  其他
关注(0)|答案(6)|浏览(1864)

以前有人问过这个问题,但最近没有,也没有明确的答案。
使用Socket.io时,在需要添加另一个服务器之前,是否存在一个可以维护的最大并发连接数?
有谁知道有哪些活跃的生产环境正在大规模地使用websockets(特别是socket.io)?我真的很想知道什么样的设置最适合最大限度的连接?
因为Websockets是建立在TCP之上的,我的理解是除非连接之间共享端口,否则你将受到64K端口限制的约束。但是我也看到了512K connections using Gretty的报告。所以我不知道。

mznpcxlj

mznpcxlj1#

这篇文章可能会帮助您:http://drewww.github.io/socket.io-benchmarking/
我想知道同样的问题,所以我写了一个小测试(使用XHR轮询)来查看连接何时开始失败(或落后),我发现(在我的情况下)套接字在大约1400-1800个并发连接时开始工作。
这是我做的一个简短要点,类似于我使用的测试:https://gist.github.com/jmyrland/5535279

idfiyjo8

idfiyjo82#

我试着socket.io在AWS上使用www.example.com,我最多可以保持大约600个连接稳定。
我发现这是因为socket.io先使用了长轮询,后来升级到了WebSocket。
在我把配置设置为只使用WebSocket之后,我可以保持大约9000个连接。
在客户端设置此配置:

const socket = require('socket.io-client')
const conn = socket(host, { upgrade: false, transports: ['websocket'] })
wko9yo5t

wko9yo5t3#

在继续下一步之前,请仔细阅读此答案的注解
关于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

最后,还要增加/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

更多信息请参考this

xdnvmnnf

xdnvmnnf4#

这个家伙似乎已经成功地在一个Node.js服务器上拥有了超过100万个并发连接。
http://blog.caustik.com/2012/08/19/node-js-w1m-concurrent-connections/
我不清楚他到底用了多少个端口。

bjg7j2ky

bjg7j2ky5#

配置完成后,您可以在终端上写入以下命令进行检查

sysctl -a | grep file
bksxznpy

bksxznpy6#

我想在2023年提供另一个答案。
我们只在socket.io-client中使用WebSocket。我们已经做了2种类型的性能测试,
1.我的测试团队使用JMeter来测试最多5000个并发连接。由于我们产品的性质,5000个连接对我们来说已经足够了,所以我们没有再增加。
1.我使用https://a.testable.io/来做另一个性能测试。(这不是一个推销他们LOL)我可以选择WS客户端从不同的位置,例如,我从NA选择了3个不同的位置,从亚洲选择了一个位置。我相信这比我只是从本地计算机运行测试脚本更接近真实的生活场景(我也有)。做这种测试会赚钱,引用他们在我做完测试后的技术支持话,“我看到你今天也成功地运行了20,000个用户的测试,太棒了!这种规模的测试不到20美元是目前为止最好的定价:)。”
顺便说一句,您还可以参考https://ably.com/topic/scaling-socketio,这是我可以找到的最新发表的关于socket.io性能的文章。
所以总而言之,我认为如果你只使用WebSocket,5000到10,000个并发连接应该不难实现。

相关问题