Tomcat下WebSocket最大连接数测试
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的内存一起调大!
网上的测试结果:
首先tomcat最大线程数默认肯定到不了几千,所以我们需要调tomcat最大线程数及运行内存。我这边最大运行内存3个g,最大线程调到5k的情况下,3k个client同时在线是没问题的。再者大家注意下linux操作系统本身有些涉及到tcp连接的配置也可能需要修改。
心跳间隔最好维持在4分半,以便兼容所有浏览器。详细见《http://m.blog.csdn.net/shangmingtao/article/details/75810099》
压力测试类:
package org.springframework.samples.websocket.echo2; 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://localhost:8080/spring-websocket-test/demo2/client-" + 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) {
int size = Integer.parseInt(args[0]);
for (int i = 1; i < size; i++) {
WebSocketTest wSocketTest = new WebSocketTest(String.valueOf(i));
if (!wSocketTest.start()) {
System.out.println("测试结束!");
break;
}
}
System.out.println("===========客户端启动的线程为:="+size);
}
}
jsp页面:
<%@page import= "org.springframework.samples.websocket.echo2.*"%>
<%
String size=request.getParameter("size");
String[] parms = {size};
WebSocketTest te=new WebSocketTest();
te.main(parms);
%>
<h1>ok</h1>
结果:

Tomcat下WebSocket最大连接数测试的更多相关文章
- webSocket ws协议测试
最近公司做了个直播的项目,需要用到Websocket进行通信,因而需要对socket最大连接数及稳定性进行测试.当初得到这一需求的时候,唯一想到的就是jmeter,从百度下载相应的socket依赖ja ...
- websocket 70K连接测试
websocket 70K连接测试 最近使用socket.io做了一个实时应用,实时性.稳定性还是很让人满意的.如果拿socket.io来做小型应用,综合效率应该是最高的.但是网上少有socket.i ...
- Win7搭建nginx+php+mysql开发环境以及websocket聊天实例测试
Win7搭建nginx+php+mysql开发环境以及websocket聊天实例测试一.下载相关安装包 1.下载nginx最新版本(nginx1.3.13版之后才支持websocket协议) 下载地址 ...
- Tomcat下安装solr6.x
1.官网上下载solr(http://lucene.apache.org/solr/)和tomcat(http://tomcat.apache.org/) 测试用到的版本:solr-6.2.1.apa ...
- 使用spring等框架的web程序在Tomcat下的启动顺序及思路理清
大牛请绕过,此文仅针对自己小白水平,对web程序的启动流程做个清晰的回顾. 一.使用spring等框架的web程序在Tomcat下的启动流程 1)Tomcat是根据web.xml来启动的.首先到web ...
- tomcat下jndi配置
jndi(Java Naming and Directory Interface,Java命名和目录接口)是一组在Java应用中访问命名和目录服务的API.命名服务将名称和对象联系起来,使得我们可以用 ...
- Window下memcached安装与测试步骤
如何在Window下memcached安装与测试步骤 工具/原料 电脑 memcached 软件 方法/步骤 软件包下载 下载Memercached For Windows:http://downlo ...
- tomcat下context.xml中JNDI数据源配置
jndi(Java Naming and Directory Interface,Java命名和目录接口)是一组在Java应用中访问命名和目录服务的API.命名服务将名称和对象联系起来,使得我们可以用 ...
- Springmvc +JNDI 在Tomcat下 配置数据源(转)
一. 简介 jndi(Java Naming and Directory Interface,Java命名和目录接口)是一组在Java应用中访问命名和目录服务的API.命名服务 ...
随机推荐
- Rotate List ,反转链表的右k个元素
问题描述: Given a list, rotate the list to the right by k places, where k is non-negative. For example:G ...
- NextPermutation,寻找下一个全排列
问题描述:给定一个数组是一个全排列,寻找下一个全排列.例如123->132, 321->123, 115->151. 算法分析:从后往前寻找顺序,找到后从往前寻找第一个大于当前元素, ...
- strcpy的实现
// // Strcpy.c // libin // // Created by 李宾 on 15/8/20. // Copyright (c) 2015年 李宾. All rights reserv ...
- go 编译
linux: set GOARCH=amd64 set GOOS=linux go build -o app_name main.go echo "编译完成,任意键退出" paus ...
- IOS-MapKit
一.MapKit框架的使用 MapKit框架使用须知 MapKit框架中所有数据类型的前缀都是MK MapKit有一个比较重要的UI控件 :MKMapView,专门用于地图显示 跟踪显示用户的位置 ...
- puppet笔记
简介: puppet是一种Linux.Unix平台的集中配置管理系统,使用ruby语言,可管理配置文件.用户.cron任务.软件包.系统服务等.puppet把这些系统实体称之为资源,puppet的设计 ...
- 剑指offer--32.把数组排成最小的数
用to_string()将整形转化为字符串,对字符串进行比较 --------------------------------------------------------------------- ...
- Windows系统下MySQL解压版添加到系统服务
MySQL软件版本:64位 5.7.12 1.首先配置MySQL的环境变量,在系统环境变量Path的开头添加MySQL的bin目录的路径,以“;”结束,我的路径配置如下: 2.修改MySQL根目录下的 ...
- DRF 用户频率限制
DRF 用户频率限制 为什么要限流 1 防爬虫 匿名用户 无法限制,代理 已登录,用户名限制:买代理 2 提供服务(接口--不同用户的访问次数不一样) vip 限制访问次数 BaseThrottle ...
- [置顶]
【机器学习PAI实践六】金融贷款发放预测
一.背景 很多农民因为缺乏资金,在每年耕种前会向相关机构申请贷款来购买种地需要的物资,等丰收之后偿还.农业贷款发放问题是一个典型的数据挖掘问题.贷款发放人通过往年的数据,包括贷款人的年收入.种植的作物 ...