Tomcat下WebSocket最大连接数测试

来源:互联网 发布:王朔小说 知乎 编辑:程序博客网 时间:2024/05/15 17:01

WebSocket现在很常用,想要测试tomcat的最大连接数,今天试了一个可行的办法和配置(之前是用全公司的设备一起来测试的,真机环境的测试收到网络的影响很大,其实真实环境应用中,网络才是websocket的最大瓶颈)

废话不多说~

1.Tomcat需要设置的地方(很多人从网上找的配置试了不可行):

1.1修改catalina.sh或者catalina.bat文件,加上这句话(JAVA_OPTS="-server -Xms2048m -Xmx2048m -Xmn512m")。

1.2修改conf下server.xml,    

            <Connector port="8180" protocol="org.apache.coyote.http11.Http11NioProtocol" connectionTimeout="20000" acceptCount="4000" 

                  maxThreads="500" maxConnections="4000" enableLookups="false"  redirectPort="8443" />

上面的设置1.1影响最终你的最大连接数,1.2的maxConnections就是最大连接数,有时候觉得设置无效,请把1.1的内存一起调大!


2.通过Java来测试最大连接数:

package com.jh.order;


import java.net.URI;


import javax.websocket.ClientEndpoint;
import javax.websocket.ContainerProvider;
import javax.websocket.Session;
import javax.websocket.WebSocketContainer;


@ClientEndpoint
public class WebSocketTest {


private String deviceId;

private Session session;

public WebSocketTest () {
}

public WebSocketTest (String deviceId) {
this.deviceId = deviceId;
}

protected boolean start() {
WebSocketContainer container = ContainerProvider.getWebSocketContainer();
String uri = "ws://192.168.12.161/orderapp/recommend?role=1&group=recommend&dldm="+ deviceId;
System.out.println("Connecting to " + uri);
try {
session = container.connectToServer(WebSocketTest.class, URI.create(uri));
System.out.println("count: " + deviceId);
} catch (Exception e) {
e.printStackTrace();
return false;
}
return true;
}

public static void main(String[] args) {
for (int i = 1; i< 50000; i++) {
WebSocketTest wSocketTest = new WebSocketTest(String.valueOf(i));
if (!wSocketTest.start()) {
System.out.println("测试结束!");
break;
}
}
}
}

1 0