我刚在服务器上实现了一个简单的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
添加了Connector
和Executor
,但结果是一样的。
在 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个工作。
这是我服务器允许的最大连接数吗? 这是我可以创建客户端的最大网页数吗? 这是测试重载的好方法吗? 我怎样才能增加这个数字?
答案 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