我刚刚在我的服务器上实现了一个简单的 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 握手期间出错:“连接” header 值不是“升级”:升级关闭
我的 Web 应用程序部署在 Tomcat 7.0.52
上。我读到默认情况下它只允许 200 个线程,所以我在 conf/server.xml
中添加了 maxThreads="1000"
到 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 个 websocket,但同样只有 200 个有效。
这是我的服务器允许的最大连接数吗? 这是我作为客户端可以创建的最大 websocket 数量吗? 这是测试重负载的好方法吗? 如何增加数量?
最佳答案
经过大量研究,我发现 maxThreads="1000"
实际上解决了问题,但是 Mozilla 只允许 200 个套接字。所以我不得不从多台客户端机器上再次测试。
Default maximum number of websocket connections allowed in FireFox is 200. Source: https://developer.mozilla.org/en/docs/WebSockets#Gecko_7.0
关于javascript - Websocket 只允许 200 个连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24889113/