HTML5 websockets:最大打开连接数?

时间:2012-09-18 10:47:40

标签: javascript html5 web-applications websocket

HTML5网页广告(和have been for some time)是一个热门话题,因为它们优雅地启用实时 server-side push

我目前有一个使用由Tomcat 7.0.30驱动的websockets的工作应用程序,其中包括websocket support。但是将其转移到生产环境会产生问题。

主要是我想知道每个浏览会话可以同时运行的最大连接数(打开; 浏览会话意味着单个浏览器标签或窗口。

开放的websocket连接是否与Web服务器可以同时处理的最大连接数相加?例如。 Apache中的MaxClients

相反,浏览器本身限制了单个浏览会话的最大websockets数量?正如此blog post所示,截至2012年4月,不同的浏览器支持不同数量的 open websocket连接。 (我个人的目标是每个浏览会话一个开放的websocket;但是这个信息仍然很好知道。)

TL / DR

  1. 每次浏览会话可能的websockets数量的限制是什么?是客户吗?服务器?或两者兼而有之?
  2. 相同的限制适用于ws:wss:个关联吗?

2 个答案:

答案 0 :(得分:33)

浏览器没有 max-connections 默认值的标准规范。它取决于实现[0]。此外,对于同一个应用程序,每个浏览会话使用多个Web套接字似乎有些过分,因为您可以使用发布/子频道。

连接的瓶颈通常是在服务器端。 Web套接字是对HTTP的升级,因此连接只是“升级”HTTP(TCP)连接[1] .HTTPS和WSS只为正常连接添加了一个安全层。它们不是一个不同的连接[2]。在您的情况下,检查 maxConnections (和 maxThreads )[3]和您的操作系统最大值[4] [5]。如果您的并发连接数达到数万,那么您应该开始考虑负载平衡或群集[6]。

[0] https://code.google.com/p/chromium/issues/detail?id=85323

[1] http://en.wikipedia.org/wiki/WebSocket

[2] http://en.wikipedia.org/wiki/HTTP_Secure

[3] http://tomcat.apache.org/tomcat-7.0-doc/config/http.html

[4] https://serverfault.com/questions/10852/what-limits-the-maximum-number-of-connections-on-a-linux-server

[5] https://superuser.com/questions/251596/is-there-a-hard-limit-of-65536-open-tcp-connections-per-ip-address-on-linux

[6] http://tomcat.apache.org/tomcat-7.0-doc/config/cluster.html

有关高并发性的更多信息:http://www.kegel.com/c10k.html

答案 1 :(得分:6)

在Gecko 7中,他们引入了参数network.websocket.max-connections,您可以在about:config中设置它。它根据这个“一次”设置最大的websocket连接: https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API

我不知道你是否可以从代码中确定这个数字,以及是否有办法确定在其他会话中打开了多少(所以你剩下多少)。