Websocket只允许200个连接

时间:2014-07-22 13:44:01

标签: javascript websocket

我刚在服务器上实现了一个简单的Websocket系统。我正在尝试测试最大连接数,我做了以下代码:

使用Javascript:

for(var i=0; i<300; i++){
    websocket();
}

function websocket() {
    var wsUri = "ws://" + document.location.host + document.location.pathname + "websocket";
    var ws = new WebSocket(wsUri);
    ws.onopen = function () { ws.send("User connected"); };
    ws.onmessage = function (e) { writeToPage(e.data); };
    ws.onclose = function () { writeToPage("User disconnected"); };
}

每次运行它时,前200个用户都会连接,之后,所有请求都会调用onclose()。在Web控制台中,我收到以下错误:

Mozilla: 与ws:// localhost:8080 / MyApp / websocket的连接在页面加载时被中断

Chrome: WebSocket握手期间出错:“连接”标头值不是“升级”:升级关闭

我的网络应用程序部署在Tomcat 7.0.52上。我读到默认它只允许200个线程,所以我在maxThreads="1000"conf/server.xml添加了ConnectorExecutor,但结果是一样的。

web.xml 中我添加了:

<context-param>
    <param-name>org.apache.tomcat.websocket.executorMaxSize</param-name>
    <param-value>1000</param-value>
</context-param>

我尝试用ws://echo.websocket.org打开300个websockets,再次只有200个工作。

这是我服务器允许的最大连接数吗? 这是我可以创建客户端的最大网页数吗? 这是测试重载的好方法吗? 我怎样才能增加这个数字?

3 个答案:

答案 0 :(得分:2)

经过大量研究后我发现maxThreads="1000"实际上解决了问题,但是Mozilla只允许200个套接字。所以我不得不再次从多台客户端机器上进行测试。

  

FireFox中允许的默认最大websocket连接数   200.资料来源:https://developer.mozilla.org/en/docs/WebSockets#Gecko_7.0

答案 1 :(得分:1)

Tomcat 7中有默认限制。 尝试设置org.apache.tomcat.websocket.executorMaxSize属性。 请参阅http://tomcat.apache.org/tomcat-7.0-doc/web-socket-howto.html#Tomcat_WebSocket_specific_configuration

答案 2 :(得分:0)

我们在WCF服务和Web Socket之间遇到此错误。它只接受 200 连接。比我们的团队在这个设置中添加了配置文件。

  <serviceThrottling 
    maxConcurrentCalls="1000" 
    maxConcurrentSessions="1000" 
    maxConcurrentInstances="1000"
  />

https://www.c-sharpcorner.com/blogs/throttling-in-wcf https://www.codeproject.com/Articles/33362/WCF-Throttling