为了保持100万个websocket的打开,需要多less系统资源?

Websocket是好的,但它能够处理1000000个并发连接?
为了保持100万个websocket的打开,需要多less系统资源?

更新的答案

简短的回答 :是的,但是很昂贵。

很长的回答

这个问题并不是唯一的WebSockets,因为WebSockets基本上是一个长期的TCP套接字,类似于HTTP的握手和最小的消息帧。

真正的问题是:单个服务器可以处理1000000个并发套接字连接,并且会消耗哪些服务器资源? 答案因多个因素而变得复杂,但对于大小合适的系统(大量CPU,RAM和快速networking)以及经过优化的服务器系统和优化的服务器软件,可以同时使用1,000,000个同时活动的套接字连接。

连接的数量不是主要问题(主要是内核调优和内存的问题),它是处理和发送/接收每个连接的数据。 如果传入的连接长时间传播,并且大部分空闲或者很less发送小块的静态数据,那么你甚至可能比甚至1,000,000个同时连接要高得多。 但是,即使在这些情况下(慢速连接大部分是空闲的),您仍然会遇到networking,服务器系统和服务器库的问题,这些networking,服务器系统和服务器库没有configuration和devise为处理大量的连接。

请参阅Alessandro Alinone关于500,000个连接的大致资源使用情况的回答。

以下是一些较旧的但仍适用的资源,可以阅读如何configuration服务器和编写服务器软件以支持大量连接:

在当今的系统中,处理100万个并发的TCP连接不成问题。

我可以肯定,根据我们自己的testing(完全披露:我是Lightstreamer的首席技术官)。

对于我们的一些客户,我们不得不多次展示一个盒子上的100万个连接(不一定是超级怪物机器)。 但让我回顾一下我们testing500K并发连接的configuration,因为这是对Amazon EC2进行的更近期的testing。

我们在m2.4xlarge实例上安装了Lightstreamer Server(这是一个WebSocket服务器,等等)。 这意味着8核心和68.4 GiB的内存。

我们启动了11台客户端机器,为Lightstreamer服务器创build500,000个并发连接。 testing已configuration为使服务器的出站吞吐量总计为90,000次更新/秒,导致峰值出站带宽为450 Mbps。

服务器从未使用超过13 GiB的RAM,并且CPU稳定在60%左右。

至less30 GiB的RAM,你可以处理100万个并发套接字。 所需的CPU取决于您需要的数据吞吐量。