为了保持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服务器和编写服务器软件以支持大量连接:
- 现代Linux机器可以拥有的开放TCP连接的理论最大数量是多less?
- http://www.kegel.com/c10k.html
在当今的系统中,处理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取决于您需要的数据吞吐量。