【发布时间】:2013-03-30 03:53:47
【问题描述】:
之前有人问过这个问题,但最近没有问过,而且没有明确的答案。
使用 Socket.io,在您需要添加另一台服务器之前,是否有可以维持的最大并发连接数?
有谁知道任何大规模使用 websockets(尤其是 socket.io)的活跃生产环境?我真的很想知道哪种设置最适合最大连接数?
因为 Websocket 是建立在 TCP 之上的,所以我的理解是,除非在连接之间共享端口,否则您将受到 64K 端口限制的约束。但我也看到了512K connections using Gretty 的报道。所以我不知道。
【问题讨论】:
-
Trello 大规模使用套接字(特别是 socket.io)。
-
那篇文章有多久了? Trello 最近每月有超过 100 万活跃用户,所以我想他们现在正在运行超过 10,000 个活跃套接字。 Trello use Redis 位于 socket.io 之上以实现可扩展性
-
Trello 现在显然拥有超过 400 万用户,但他们肯定在大量服务器上运行,对吧?这让我回到了最初的问题:他们(或其他任何人)每台服务器的实际峰值并发用户数是多少?知道他们使用什么样的服务器/容器也很好。他们还在运行自己的分叉,还是回到原点/主人?我问这个问题的唯一目的是试图评估我的公司(当时)是否有能力为大约 120,000 个并发连接维护一个 Socket.io 应用程序。
-
关于端口限制,我认为解释了为什么这不是问题的解释here。基本上,系统上使用的唯一端口就是您正在监听的端口。为每个连接创建套接字,这些套接字使用文件描述符,但它们不使用您机器上的端口。
-
请不要在 RHEL 或 CENTOS 中使用@MajidJafari 答案。由于 /etc/sysctl.conf 损坏,您将无法使用 sudo。这意味着您将无法访问您的 EC2 实例或 PC。我必须分离卷,将备份卷挂载为根卷并编辑 /etc/sysctl.conf 和 /etc/security/limits.conf。如果您知道自己在做什么,请使用他的答案。