**已关闭。**此问题不符合Stack Overflow guidelines。当前不接受答案。
要求代码的问题必须证明对要解决的问题有最低限度的了解。包括尝试的解决方案、为什么它们不起作用以及expected
结果。另请参阅:Stack Overflow question checklist
9年前就关门了。
Improve this question
WebSocket很好,但是它能够处理1,000,000个并发连接吗?
保持1,000,000个WebSocket打开需要多少系统资源?
谢谢你!
2条答案
按热度按时间5f0d552i1#
在当今的系统上,处理100万个并发TCP连接不是问题。
我可以肯定,根据我们自己的测试(充分披露:我是Lightstreamer的首席技术官)。
我们不得不多次向我们的一些客户演示,在一个机器上可以达到100万个连接(不一定是超级机器)。但是让我回顾一下我们测试500 K并发连接的配置,因为这是在Amazon EC2上执行的一个更新的测试。
我们在一个m2.4xlarge示例上安装了Lightstreamer Server(它是一个WebSocket服务器),这意味着8个内核和68.4 GiB内存。
我们启动了11台客户端机器,创建了500,000个与Lightstreamer服务器的并发连接。测试配置为服务器的总出站吞吐量为90,000次更新/秒,导致峰值出站带宽为450 Mbit/s。
服务器从未使用超过13 GiB的RAM,CPU稳定在60%左右。
至少有30 GiB的RAM,你可以处理100万个并发套接字。所需的CPU取决于你所需要的数据吞吐量。
mtb9vblg2#
更新的答案
简短回答:是,但是很贵。
长回答:
这个问题并不是WebSockets独有的,因为WebSockets基本上是长寿命的TCP套接字,具有类似HTTP的握手和最小的消息帧。
真实的的问题是:一台服务器能同时处理1,000,000个套接字连接吗?2这将消耗多少服务器资源?3答案因几个因素而变得复杂,但对于一个规模适当的系统(大量CPU、RAM和快速网络),并具有调优的服务器系统和优化的服务器软件,1,000,000个同时活动套接字连接是可能的。
连接的数量不是主要问题(这主要是内核调优和足够内存的问题),它是处理和发送/接收数据到/从每个这些连接。如果传入的连接分布在很长一段时间,他们大多是空闲的或很少发送小块静态数据,那么你可能会得到远远高于1000,然而,即使在这些条件下(连接速度慢,大部分时间都处于空闲状态),您仍然会遇到网络、服务器系统和服务器库的问题,因为它们没有配置和设计成处理大量连接。
请参阅Alessandro Alinone关于500,000个连接的近似资源使用情况的回答。
以下是一些较旧但仍然适用的资源,可供您了解如何配置服务器和编写服务器软件以支持大量连接: