使用Web套接字的最大连接数

时间:2016-03-29 07:46:12

标签: html5 websocket java-websocket

我正在使用web-sockets开发一个需要实时数据的Web应用程序。

使用网络应用程序的客户数量将超过10万。

服务器端Web套接字编码在Java中完成。一个Web套接字服务器可以处理这么多连接吗?

如果没有,我怎样才能做到这一点。我只能使用网络套接字。

2 个答案:

答案 0 :(得分:1)

WebSocket服务器与任何其他基于TCP的服务器一样,可以打开大量连接。它们可以是基于文件描述符的。您可以在Linux上轻松找到最大(系统范围)的FD:

%cat / proc / sys / fs / file-max 165038

系统范围内有用户限制的内核参数(以及像“ulimit”这样的shell级别的东西)。顺便说一下,你需要编辑/etc/sysctl.conf以在重启过程中增加你的FD模块。

当然,您可以将此数字增加到您想要的任何数量(对内核内存的比例影响)。

或者服务器可以通过技巧来复用单个连接。

但真正的问题是,流经连接的数据的概况是什么?你有100K用户每天获得1个64字节的消息吗?或者这些100K用户每秒获得50条1K消息? WebSocket服务器是否可以通过多个NIC分割其连接(即,分散I / O负载)?消息是否全部加密,因此需要大量的CPU?您可以轻松地对WebSocket服务器进行集群,因此故障转移对您来说很容易,对您的用户来说也很容易吗?您的服务器任务/业务是否至关重要?...也就是说,如果发生灾难,您能否让100K用户消失?在考虑WebSocket服务器的可伸缩性时,需要考虑许多问题。

在我们的实验室中,我们可以在服务器上创建数百万个连接(以及群集中的更多连接)。在现实世界中,除了文件描述符之外,还需要在生产部署中考虑其他“规模”因素。希望这会有所帮助。

完全披露:我为WS供应商Kaazing工作。

答案 1 :(得分:0)

正如FrankG上面解释的那样,WebSocket连接的数量取决于用例。

以下是使用MigratoryData WebSocket Server的两个基准测试用于两个非常不同的用例,这些用例也详细说明了系统配置(但是请注意,系统配置只是一个细节,并且通过MigratoryData的体系结构实现了高可扩展性。专为拥有数百万用户的实时网站而设计。

在一个用例中,MigratoryData扩展到1000万个并发连接(同时提供~1 Gbps消息传递):

https://mrotaru.wordpress.com/2016/01/20/migratorydata-makes-its-c10m-scalability-record-more-robust-with-zing-jvm-achieve-near-1-gbps-messaging-to-10-million-concurrent-users-with-only-15-milliseconds-consistent-latency/

在另一个用例中,MigratoryData扩展到192,000(同时提供~9 Gbps):

https://mrotaru.wordpress.com/2013/03/27/migratorydata-demonstrates-record-breaking-8x-higher-websocket-scalability-than-competition/

这些数字是在MigratoryData WebSocket Server的单个实例上实现的。 MigratoryData可以进行群集,因此您也可以有效地水平扩展到任意数量的订阅者。

完全披露:我为MigratoryData工作。