对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 ...
随机推荐
- SpringBoot 配置静态资源映射
SpringBoot 配置静态资源映射 (嵌入式servlet容器)先决知识 request.getSession().getServletContext().getRealPath("/& ...
- 面试官:你分析过SpringMVC的源码吗?
1. MVC使用 在研究源码之前,先来回顾以下springmvc 是如何配置的,这将能使我们更容易理解源码. 1.1 web.xml <servlet> <servlet-name& ...
- 02-Java中的对象和类
面向对象: 程序由对象构成,每个对象包含对用户公开的特定功能部分(public)和隐藏实现部分(private). 类: 构造对象的模板 对象: 对象的行为 --- 可以对对象施加的操作(方法) 对象 ...
- Java四种引用
Java中提供了一个Reference抽象类,此类定义所有引用对象共有的操作,与垃圾收集器密切配合实现的.主要是为了决定某些对象的生命周期,有利于JVM进行垃圾回收.而继承此类的有四种引用,分别是St ...
- bat文件传递参数
%*是表示命令行传过来的参数,%1表示第一个参数,%2表示第二个参数,以此类推.如执行C:/>hello.bat hello world, %1取出来就是hello %2取出来就是world h ...
- ajax知识点
什么是AJAX? AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML). AJAX 不是新的编程语言,而是一种使用现有标准的新方法. ...
- js 两数组去除重复数值
//两数组去除重复数值 mergeArray: function(arr1, arr2) { for (var i = 0; i < arr1.length; i++) { for (var j ...
- CSS3动画属性:变形(transform)
Transform字面上就是变形,改变的意思.在CSS3中transform主要包括以下几种:旋转rotate.扭曲skew.缩放scale和移动translate以及矩阵变形matrix. 语法 t ...
- Android 弹性布局 FlexboxLayout了解一下
原文链接:https://mp.weixin.qq.com/s/Mi3cK7xujmEMI_rc51-r4g RelativeLayout.LinearLayout等常用布局相信大家早已耳熟能详,今天 ...
- loadrunner 脚本优化-参数化之场景中的参数化取值
脚本优化-场景中的参数化取值 by:授客 QQ:1033553122 Action() { lr_eval_string("{NewParam}"); lr_eval_stri ...