对tomcat7模拟并发请求及相关配置参数的含义
这里的并不是真正的并发请求,因为for循环是间隔10毫秒,并且线程初始化也需要时间的,到真正执行http请求的时刻是不确定的。
tomcat 的运行状态可以在webapps下的manage项目查看,可以看到tomcat的运行模式,当前线程总数,占用内存大小等。
1 tomcat版本

2 tomcat配置文件server.xml设置

3 各参数的含义
acceptCount 等待队列的长度 , maxConnections 最大连接的长度,maxThreads 可以使用的最大线程数量
4 tomcat7运行模式
默认是BIO模式

5 服务端接收请求的方法
@RequestMapping(value = { "/testHttp" })
public void testHttpConcurrentRequest(HttpServletRequest req,HttpServletResponse resp){
String current = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss").format(LocalDateTime.now());
System.out.println(current + " 有客户端连接,参数:"+req.getParameter("name"));
try {
//保持连接
Thread.sleep(*);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
out("server response:"+req.getParameter("name"), resp);
}
6 客户端发送多线程请求
public class HttpClient {
public final static ExecutorService cachedThreadPool = Executors.newCachedThreadPool();
public static void main(String[] args) throws Exception {
HttpUtils helper = new HttpUtils();
for (int i = ; i < ; i++) { //根据测试不同更改数量
ExcuteHttpRequest ehr = new ExcuteHttpRequest(i + , helper);
cachedThreadPool.execute(ehr);
Thread.sleep();
}
Thread.sleep( * );
}
}
class ExcuteHttpRequest implements Runnable {
private int clid;
private HttpUtils helper;
public ExcuteHttpRequest(int clid, HttpUtils helper) {
this.clid = clid;
this.helper = helper;
}
@Override
public void run() {
String current = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss").format(LocalDateTime.now());
System.out.println(current + " " + this.clid + "开始连接..");
try {
String responseText = this.helper.sendGet("http://127.0.0.1:25080/abc/testHttp?name="+ this.clid);
System.out.println(current + " " + this.clid + "接受到的数据:" + responseText);
} catch (Exception e) {
// TODO Auto-generated catch block
System.out.println(current + " " + this.clid +"连接出错:"+e.getMessage());
}
}
}
7测试结果

由于在服务端里设置了线程sleep30秒,而且maxConnections为200,acceptCount为100,所以在服务端接收了400个请求后,就拒接接收请求了。



由于maxThread为150,服务端同时能处理的请求是由maxThread决定的。所以在13分33秒时,正在处理请求是150个,每个请求是30秒完成,所以等到14分02秒时,又可以处理接下来的150个请求了,再等30秒处理最后的100个请求。


从客户端收到的返回值可以看出,只要请求发送到服务端了,在不超时的情况下就可以收到响应,由于服务端共接收到了400个请求,所以客户端接收到了400个响应。
转载自:https://blog.csdn.net/kaka20099527/article/details/53285348/
对tomcat7模拟并发请求及相关配置参数的含义的更多相关文章
- c# 模拟并发请求 ,只能并发2个连接。
使用 HttpWebRequest 模拟并发请求的时候,发现不管怎么提高thread 的数量,都没用,服务器端用计数器看到的都是2个连接,见下图(关于计数器怎么开,百度) 然后搜了一下,发现需要在ap ...
- IO 相关配置参数
INNODB I/O相关配置 记录日志为顺序I/O,刷新日志到数据文件为随机操作.顺序操作性能快于随机IO. innodb_log_file_size innodb_log_files_in_grou ...
- MySQL性能优化-I/O相关配置参数
本文介绍InnoDB和MyISAM两种存储引擎的I/O相关参数配置. 1.InnoDB I/O相关配置 Innodb是一种事务型的存储引擎,为了减少提交事务时产生的io开销,innodb采用了写日志 ...
- 利用 apache bench 模拟并发请求
示意代码如下 ab -n 1000 -c 10 http://127.0.0.1/ -n 指的是总的请求,默认值是 1 -c 指的是并发数,默认值是 1 -t 指的是测试的总时间,测试所进行的最大秒数 ...
- cordova 发送ajax请求的相关配置
<access origin="*" /> <preference name="scheme" value="http" ...
- 【nginx笔记】系统参数设置-使Nginx支持更多并发请求的TCP网络参数
首先,需要修改/etc/sysctl.conf来更改内核参数.例如,最常用的配置: fs.file-max = 999999 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tc ...
- CentOS防火墙iptables-config的相关配置参数详解
默认/etc/sysoncifg/iptables-config的配置内容: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 2 ...
- Flask基础(04)-->相关配置参数
# 导入Flask from flask import Flask from flask import config # 创建Flask的应用程序 app = Flask(__name__) #=== ...
- shiro 配置参数的含义
anon 任何用户发送的请求都能够访问 authc 经过认证的请求可访问,否则将会将请求重定向到 ini 配置文件配置的 authc.loginUrl 资源,进行认证操作 authc.loginUrl ...
随机推荐
- mybatis笔记02
目录 0. 文章目录 1. Mybatis映射文件 1.1 输入映射 1.2 输出映射 1.3 resultMap 2. 动态SQL 2.1 if和where 2.2 foreach循环 2.3 sq ...
- Mybatis框架基础支持层——反射工具箱之Reflector&ReflectorFactory(3)
说明:Reflector是Mybatis反射工具的基础,每个Reflector对应一个类,在Reflector中封装有该类的元信息, 以及基于类信息的一系列反射应用封装API public class ...
- VM扩展磁盘大小
1.通过扩展磁盘的方法增大磁盘大小 2.然后开启Linux 此时查看磁盘 df -h 并没有增加,使用 fdisk -l 查看发现已经扩展 使用 root 用户,进入到 ~ 家目录下面. 3.使用 ...
- es6 语法 (Decorator)
修饰器是一个函数,用来修改类的行为(注意:1.函数 2.修改行为 3.对类进行操作) { //修饰器函数定义 target:类本身,name名称,descriptor描述 let readonly ...
- CSS3动画属性:动画(animation)
一:动画(animation)的参数详解 由于上面用到了animation动画,这里详细介绍下这个animation的参数. 简介 CSS动画(Animations)简单说就是在一段固定的动画时间内暗 ...
- spring boot 集成 redis lettuce
一.简介 spring boot框架中已经集成了redis,在1.x.x的版本时默认使用的jedis客户端,现在是2.x.x版本默认使用的lettuce客户端,两种客户端的区别如下 # Jedis和L ...
- Python 对服务器返回数据编码进行判断之chardet
对服务器返回数据编码进行判断之chardet by:授客 QQ:1033553122 测试环境 Win764Bit chardet-2.3.0 下载地址1:https://pypi.pytho ...
- Play 2D games on Pixel running Android Nougat (N7.1.2) with Daydream View VR headset
- 官网下载的Struts 2解压后缺少xwork-core.jar文件
为Eclipse配置Struts-2.5.10所需最少jar文件: 缺少的文件已被合并在struts2-core-2.5.10.jar文件中.我下的是最新版的,如果你下的找不到就是这个原因啦.
- <1>Linux日志查找方法
Linux日志查找方法 适用于测试,开发,运维人员,用来查找Linux服务器问题的一般方法,比较实用,如果有更好的办法可以一块讨论,欢迎大神们来指导哈!!! 进入正题 第一步.通过Xshell登录服务 ...