Answers:
更新的答案
简短的回答:是的,但是很贵。
长答案:
这个问题并不是WebSocket独有的,因为WebSocket从根本上讲是寿命很长的TCP套接字,具有类似HTTP的握手功能,并且消息的帧最少。
真正的问题是:单个服务器可以处理1,000,000个并发套接字连接,这将消耗哪些服务器资源?答案由于多种因素而变得复杂,但是对于适当大小的系统(大量的CPU,RAM和快速联网)以及经过调整的服务器系统和优化的服务器软件,可以同时进行1,000,000个活动套接字连接。
连接的数量不是主要问题(主要只是内核调整和足够的内存问题),它是处理数据以及向/从每个连接发送/接收数据的问题。如果传入的连接分散很长一段时间,并且它们大部分处于空闲状态,或者不经常发送小块静态数据,那么您获得的连接数可能甚至超过1,000,000个。但是,即使在这种情况下(连接处于低速状态的慢速连接),您仍然会遇到未配置和设计为处理大量连接的网络,服务器系统和服务器库的问题。
有关500,000个连接的大约资源使用情况,请参阅Alessandro Alinone的答案。
以下是一些较旧但仍适用的资源,以阅读如何配置服务器以及编写服务器软件以支持大量连接的信息:
在当今的系统上,处理100万个并发TCP连接已不是问题。
我可以根据我们自己的测试确认这一点(完全公开:我是Lightstreamer的CTO)。
我们不得不向我们的一些客户演示几次,证明在一个盒子上(不一定是超级怪兽机器)可以达到100万个连接。但是,让我回顾一下测试500K并发连接的配置,因为这是在Amazon EC2上执行的最新测试。
我们在m2.4xlarge实例上安装了Lightstreamer Server(其中包括WebSocket服务器)。这意味着8核和68.4 GiB内存。
我们启动了11台客户端计算机,以创建与Lightstreamer Server的500,000个并发连接。对测试进行了配置,以使服务器的总出站吞吐量为90,000个更新/秒,从而导致450 Mbit / s出站带宽的峰值。
服务器从未使用超过13 GiB的RAM,CPU稳定在60%左右。
使用至少30个GiB RAM,您可以处理100万个并发套接字。所需的CPU取决于所需的数据吞吐量。