主要对tomcat的参数做一些记录(jmeter和tomcat在同一个计算机,可能引起测试误差)

我的计算机配置  4核8线程  8G内存

案例一

tomcat  JVM  1.8G堆内存,无数据库操作

#最大线程数
server.tomcat.maxThreads =10000
#这个参数是指在同一时间,tomcat能够接受的最大连接数,一般这个值要大于maxThreads+acceptCount
server.tomcat.maxConnections =20000
#当线程数量达到最大线程数时所允许的最大等待队列的长度
server.tomcat.acceptCount =200
#最小空闲线程数
server.tomcat.minSpareThreads =

  并发数 平均响应时间 响应时间中位数 90%用户的响应时间 95%用户的响应时间 99%用户的响应时间 最小响应时间 最大响应时间 错误率 吞吐量(s) 每秒发送的数据(KB) 每秒接受的数据(KB)
HTTP Request 1000 354 337 850 862 873 1 879 0.0% 887.3 103.9 274.6
HTTP Request 5000 1000 1047 1725 2009 2422 94 2721 0.0% 802.9 94.0 248.5
HTTP Request 10000 1692 1389 3265 3582 3918 137 6016 0.0% 699.8 78.5 207.3
HTTP Request 15000 1166 945 2565 2877 3958 5 5347 47.3% 496.7 611.7 80.9
HTTP Request 20000 1477 1355 2883 3244 4273 5 5298 17.7% 680.2 363.8 172.2

分析:在tomcat允许最大10000线程的情况下,并发数越大,响应时间越长,吞吐量越小。在某时刻会发生连接错误。

案例二

tomcat  JVM  1.8G堆内存,无数据库操作

#最大线程数
server.tomcat.maxThreads =800
#这个参数是指在同一时间,tomcat能够接受的最大连接数,一般这个值要大于maxThreads+acceptCount
server.tomcat.maxConnections =20000
#当线程数量达到最大线程数时所允许的最大等待队列的长度
server.tomcat.acceptCount =200
#最小空闲线程数
server.tomcat.minSpareThreads =
  并发数 平均响应时间 响应时间中位数 90%用户的响应时间 95%用户的响应时间 99%用户的响应时间 最小响应时间 最大响应时间 错误率 吞吐量(s) 每秒发送的数据(KB) 每秒接受的数据(KB)
HTTP Request 1000 1806 2019 2356 2410 2497 975 2582 0.0% 385.8 45.2 119.4
HTTP Request 5000 2353 2210 3582 4159 4341 618 4538 49.74% 874.3 1255.4 136.0

分析:在tomcat允许最大800线程的情况下,并发数不能超过800太多(1000可以),不然会有很多的请求会因为tomcat的接受请求线程全被占用而被tomcat服务器拒绝接受。Address already in use: connect

案例三

tomcat  JVM  1.8G堆内存,无数据库操作

#最大线程数
server.tomcat.maxThreads =20000
#这个参数是指在同一时间,tomcat能够接受的最大连接数,一般这个值要大于maxThreads+acceptCount
server.tomcat.maxConnections =30000
#当线程数量达到最大线程数时所允许的最大等待队列的长度
server.tomcat.acceptCount =200
#最小空闲线程数
server.tomcat.minSpareThreads =
  并发数 平均响应时间 响应时间中位数 90%用户的响应时间 95%用户的响应时间 99%用户的响应时间 最小响应时间 最大响应时间 错误率 吞吐量(s) 每秒发送的数据(KB) 每秒接受的数据(KB)
HTTP Request 20000 1638 1330 3210 3872 4382 4 4619 13.26% 717.6 311.8 192.6
HTTP Request 15000 1597 1406 315 3276 4116 3 4994 1.22% 767.2 114.7 234.6
HTTP Request 8000 1726 1729 2905 2993 4099 82 4768 0.0% 797.7 94.8 246.8
HTTP Request 5000 2171 2073 3423 3844 4498 334 4892 0.0% 753.1 100.6 231.7
HTTP Request 3000 2075 2214 3265 3391 3656 1 3736 0.0% 712.8 83.53 220.6
HTTP Request 1000 461 565 843 874 992 2 998 0.0% 796.2 93.3 246.4

分析:和案例一相比类似,最大线程数不是越大越好,线程数的增多或导致过多的线程上下文切换,耗费时间。导致单个响应时间的上升。

总结:maxThreads并没有一个最优的值,需要根据系统的配置和项目内容来不断地测试,调整和优化。最终得到合理的配置。在tomcat的配置相同的情况并且相同的并发下,响应时间,错误率,吞吐量也存在较大差异,主要是因为系统的真实环境不同,可能系统本来就有较多线程在运行。

5000并发

jmeter对tomcat性能测试的更多相关文章

  1. Jmeter之tomcat性能测试+性能改进措施

    Jmeter用于tomcat性能测试,因为项目部署在tomcat,正常情况下,一个tomcat可以承受500个并发,通过修改配置,及其相关的tomcat优化,可以承受到1000个并发. 如何测试tom ...

  2. JMeter学习(十四)JMeter监控Tomcat性能

    使用jmeter的tomcat监视器功能,可以通过向tomcat的status页面发送get请求,得到资源使用信息,然后转换为只直观的图像方式,这样的话,就可以监视到服务器的资源使用情况,不过需要注意 ...

  3. [转]Jmeter + Grafana + InfluxDB 性能测试监控

    https://www.cnblogs.com/yyhh/p/5990228.html Jmeter + Grafana + InfluxDB 性能测试监控 效果不错

  4. 搭建Jmeter + Grafana + InfluxDB性能测试监控环境

    背景 Jmeter原生的实时监控每半分钟收集一次数据,只能在Linux控制台查看日志输出,界面看起来不直观,图表报告只能等压测结束后才能生成.如下图为jmeter在Linux下运行的实时日志: 那么如 ...

  5. Jmeter之数据库性能测试

    公司的**产品急待上线,但查询订单操作响应很慢,为了准确定位问题,特对几个大数据查询语句进行性能测试. 环境介绍:数据库用的MYSQL,采用分布式布置,本次单压测一台数据库服务器,查询待支付订单.待消 ...

  6. Jmeter Http接口性能测试

    Jmeter Http接口性能测试 1.      启动Jmeter Jmeter下载解压即可使用,Jmeter启动,点击D:\ProgramFiles\jmeter\apache-jmeter-2. ...

  7. 【技术博客】 利用Postman和Jmeter进行接口性能测试

    利用Postman和Jmeter进行接口性能测试 作者:ZBW 版本:v1.1 在Phylab的开发过程中,对于生成报告接口的性能考量十分重要.原有的Latex接口虽然生成的报告美观,但编译Latex ...

  8. JMeter强大的性能测试工具

    JMeter强大的性能测试工具,可模拟服务器负载,进行性能测试 配合badboy采集请求数据.

  9. 基于Docker 部署Jmeter + Grafana + InfluxDB 性能测试监控配置(亲测可用)

    工具介绍: InfluxDB:是一款用Go语言编写的开源分布式时序.事件和指标数据库,无需外部依赖.该数据库现在主要用于存储涉及大量的时间戳数据,如DevOps监控数据,APP metrics, lo ...

随机推荐

  1. DIY客户端框架

    C/S类型的客户端做过好多轮了,在架构上每次都调整优化一部分,慢慢的形成了DIY的框架性东西. 可是最近这一看呢,已经不像MVC了,然后有一天看到了MVP概念,咦!很像.再一看,嗯,就该是MVP. M ...

  2. iOS 常用算法之设计一个算法,验证某字符是否为合法IPV4字符

    浅析 : 一个IPV4字符由3个大于0小于255的数字 以及 3个点构成, 所有我们需要判断小数点数量是否满足条件, 以及小数点隔开的每部分是否满足条件即可. 思路: 1. 校验是否有3个小数点; 2 ...

  3. python生产者和消费者模式实现(二)多进程方式

    import timeimport randomfrom multiprocessing import Process, Queue # 生产者def producer(q, i): food = ' ...

  4. win10输入法问题,已禁止IME 问题解决

    第一种较为简单的解决方法: windows+R打开「运行」,然后打ctfmon,确定. 另外一种解法: windows的老bug了解决办法: 1. I. WIN + X 打开控制面板 -> 管理 ...

  5. Ubuntu18.04连接蓝牙耳机

    使用的耳机是索尼WI-SP500,打开设置,找到Bluetooth,直接连接(WI-SP500在连接第二台设备时,需要长按开机键7秒才行), 保证Output选择需要连接的耳机,然后确保Profile ...

  6. C++中的传值与传址

    在指针的传递中,也涉及到传值与传址的问题.下面通过一个函数进行说明. 代码如下: bool openBinary(uchar* buffer) { ; buffer = (uchar*)malloc( ...

  7. luoguP3431 [POI2005]AUT-The Bus

    安利系列博文 https://www.cnblogs.com/tyner/p/11565348.html https://www.cnblogs.com/tyner/p/11605073.html 做 ...

  8. Html学习之七(CSS选择器的使用--基础选择器优先级问题)

    二.基础选择器的综合使用 优先级顺序:id选择器>class选择器>元素选择器.也就是说,如果这三种选择器同时为某一个元素设定样式,那么冲突的部分按优先级的顺序依次决定. <!DOC ...

  9. lua 7 运算符

    转自:http://www.runoob.com/lua/lua-miscellaneous-operator.html Lua提供了以下几种运算符类型: 算术运算符 关系运算符 逻辑运算符 其他运算 ...

  10. 接口自动化与UI自动化两者的可行性

    1.首先接口测试是跳过前端界面对服务端的测试,UI测试是对前端界面的测试,从分层测试的角度考虑,两者不应该是可以互相取代的关系.   2.从公司开展自动化的的角度考虑,可以重点关注这个项目开展接口自动 ...