Jmeter-阶梯式压测Concurrency Thread Group

简介: Jmeter-阶梯式压测Concurrency Thread Group

在性能测试中经常提到并发,但是实际上很少会有同时很多请求的,如果一下子就来很多的请求,服务器很快就会被压垮。都是在逐渐增加,然后达到一个预期值,再持续运行一段时间,其实阿里云的PTS配置压测策略也有这种的。

95dcc176-b4fc-48d6-a19a-6239ba1c34f2.png

在jmeter中有插件可以帮助我们实现这种场景。(推荐使用新版的bzm - Concurrency Thread Group)

1.Stepping Thread Group

通过插件管理器下载插件Custom Thread Groups即可,点击了Apply后就等待安装,安装后jmeter会自动重启的。

95dcc176-b4fc-48d6-a19a-6239ba1c34f2.png

95dcc176-b4fc-48d6-a19a-6239ba1c34f2.png

95dcc176-b4fc-48d6-a19a-6239ba1c34f2.pngThis group will start N threads:设置线程组启动的线程总数为N个;First,wait for N seconds:启动第一个线程之前,需要等待N秒;Then start N threads:设置最开始时启动N个线程;ZNext,add X threads every Y seconds,using ramXp-up Z seconds:每隔Y秒,启动X个线程,在Z秒内启动X个线程;Then hold load for N seconds:启动的线程总数达到最大值之后,再持续运行N秒;Finally,stop X threads every Y seconds:每Y秒停止X个线程;

2.Concurrency Thread Group

测试计划右键添加线程组->bzm - Concurrency Thread Group

95dcc176-b4fc-48d6-a19a-6239ba1c34f2.pngTarget Concurrency: 预期客户端最大并发线程数为100Ramp Up Time(min): 在1min内启动100个线程Ramp-up Steps Count: 在上述时间内,分5次启动Hold Target Rate Time (min): 达到目标并发线程数100后,再并发运行30秒Thread Iterations Limit:线程迭代次数限制,即循环次数(空,即为一次)(无特殊情况,建议不设置该选项的值)Log Threads Status into File:将线程状态记录到文件中

3.Ultimate Thread Group

测试计划右键添加->线程组->jp@gc - Ultimate Thread Group

95dcc176-b4fc-48d6-a19a-6239ba1c34f2.pngStart Threads Count:当前行启动的线程总数Initial Delay/sec:延时启动当前行的线程,单位:秒Startup Time/sec:启动当前行所有线程达峰值所需时间,单位:秒Hold Load For/sec:当前行线程达到峰值后的稳定加载时间,单位:秒Shutdown Time:停止当前行所有线程所需时间,单位:秒

上图含义:

第一个线程:没有延时,在30秒内启动100个线程数,到达100个后稳定运行60秒后,在再10秒内结束100个线程数。第二、第三行同理。

[mark]需要注意的是如果设置多行其实运行时是一起运行的,并不是第一行设置的结束了再进行第二行,点击开始后,立马启动第一行设置的线程,启动2秒后,第二行和第三行的线程开始启动(此时第一行设置的线程数也是在启动中,同步进行的)[/mark]

三.查看结果

以上阶梯式压测可以添加 jp@gc - Active Threads Over Time 察看具体请求结果图(需要安装插件3 Basic graphs)

95dcc176-b4fc-48d6-a19a-6239ba1c34f2.png

95dcc176-b4fc-48d6-a19a-6239ba1c34f2.png95dcc176-b4fc-48d6-a19a-6239ba1c34f2.png

 

总体来讲:普通的压测,线程产生的方式是固定的,通过计算得出每秒产生X个线程(在线程中配置的,线程数10,5秒,循环2次;这样计算出来就是每0.5s产生一个线程,共计循环2次),每个线程从请求发出,到服务端处理再返回接收,这样一个线程的完整生命周期就结束了,后面就没他啥事了。而阶梯式压测能保证活跃的线程数在一个数值,当一个线程结束时为了保持活跃度,jmeter会立马再产生一个新的线程来运行,维护活跃的线程数,具体的线程产生间隔时间是根据实际运行状态来决定的,旧的线程结束的快,新的产生就产生得快,因此间隔时间没有固定值(而普通的压测间隔时间就是固定的值)。阶梯式压测可以控制的是在一段时间内的线程数,所以可能相同配置每次阶梯式压测,总的线程数都是不一样的,测出来的结果也是不同的。

相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
相关文章
|
2月前
|
Ubuntu Java 测试技术
【Linux】一站式教会:Ubuntu(无UI界面)使用apache-jmeter进行压测
【Linux】一站式教会:Ubuntu(无UI界面)使用apache-jmeter进行压测
|
8月前
|
关系型数据库 MySQL Java
【JMeter】(3)---MySQL压测
【JMeter】(3)---MySQL压测
177 0
|
8月前
|
JSON Java 测试技术
【JMeter】(2)---HTTP压测
【JMeter】(2)---HTTP压测
99 0
|
6月前
|
消息中间件 弹性计算 Java
使用阿里云性能测试工具 JMeter 场景压测 RocketMQ 最佳实践
使用阿里云性能测试工具 JMeter 场景压测 RocketMQ 最佳实践
|
8月前
|
XML 前端开发 测试技术
使用 jMeter 对 SAP Spartacus 进行并发性能测试
使用 jMeter 对 SAP Spartacus 进行并发性能测试
73 0
|
4月前
|
测试技术 UED
PTS压测问题之资源准备好慢如何解决
PTS(Performance Testing Service)是一项面向网站、应用等提供的压力测试服务,用于模拟不同场景下的用户访问,评估系统的性能表现;在进行PTS压测时,可能会出现一些异常或报错,本合集将PTS压测中频繁出现的问题及其解决办法进行汇编,旨在帮助用户更有效地进行性能测试和问题定位。
249 1
|
4月前
|
JSON 网络协议 Java
使用Jmeter进行功能和性能测试
使用Jmeter进行功能和性能测试
|
9月前
|
关系型数据库 MySQL Java
jmeter--压测数据库
jmeter--压测数据库
|
6月前
|
JSON Java 测试技术
Jmeter压测工具使用手册(四)
Jmeter压测工具使用手册
111 0
|
6月前
|
JSON Java 测试技术
Jmeter压测工具使用手册(三)
Jmeter压测工具使用手册