Jmeter 梯度压测之插件 Ultimate Thread Group
一、背景
在性能测试中,由于系统本身的最大 TPS 上限是固定的,即服务端的处理能力(容量)是固定的,如果自变量(线程数)压力过大,那么系统平均处理时间(响应时间)会被拉长。不过这个时候其实瓶颈早就出现了。 所以在场景压测中的自变量(线程数)递增一定需要是连续的,并且在递增的过程中要有梯度的,且场景中的线程递增一定要和因变量(TPS) 的递增有比例关系,且不是突然达到最上限,这样才能准确找出系统的瓶颈点。
如果在每个阶梯递增的过程中,出现了抖动,这就明显是系统设置的不合理导致的。设置不合理,有两种可能性:1. 资源的动态分配不合理,像后端线程池、内存、缓存等等;2. 数据没有预热。
二、插件安装
启动jmeter的GUI,点击选择Options
,可以看到已经安装好的插件管理工具Plugins Manager插件管理界面,搜索 jpgc - Standard Set,勾选它,然后点击安装。
安装后,重启jmeter,然后可以看到安装结果。
然后,在线程组添加中,可以看到已经安装好的插件。
三、插件简介
Ultimate Thread Group插件跟Stepping Thread Group线程组有些类似,不过这个是多个线程组设置的结合。执行的时候,每个线程组是同时按照自己的规则开始执行的,每一时刻,得到的结果都是两个线程组的叠加。Ultimate Thread Group插件面板信息,如下:
-
参数解释:
-
Start Threads Count
:当前行启动的线程总数Initial Delay,sec
:延时启动当前行的线程,单位:秒Startup Time,sec
:启动当前行所有线程达峰值所需时间,单位:秒Hold Load For,sec
:当前行线程达到峰值后的稳定加载时间,单位:秒Shutdown Time
:停止当前行所有线程所需时间,单位:秒
-
Ultimate Thread Group
插件在设置线程计划时,它会根据你的设定而展示出趋势图,比如,现在设定如下参数: -
Start Threads Count
:25Initial Delay/sec
:0秒Startup Time/sec
:1秒Hold Load For/sec
:300秒Shutdown Time
:0秒
-
表示在1秒内增加25个线程,并持续加压300秒。
-
Start Threads Count
:25Initial Delay/sec
:60秒Startup Time/sec
:1秒Hold Load For/sec
:240秒Shutdown Time
:0秒
-
表示在1秒内增加25个线程,延时60秒再启动当前线程,持续加压240秒。以此类推,制定出梯度加压的策略。
需要注意:
Start Threads Count
:每行设定的值,代表每次增加的线程数,比如上图,代表每次增加25个线程。Initial Delay,sec
: 要设置梯度压测,需要与Hold Load For/sec
配合设置时间。第一行Hold Load For/sec
相当于是整个递增压测,稳定加载的总时间。Initial Delay,sec
则是每次递增加压时的等待时间。
比如,需求是每次增加25个线程,稳定加载60秒,最高100个线程。那么就分成四次递增加压,每次稳定加载60秒,那么累计的稳定加载的总时间就是240秒,第一行Hold Load For/sec
就应该填240秒。第二行Hold Load For/sec
就应该填180秒,以此类推。
四、参考
1、下载地址:https://jmeter-plugins.org/install/Install/
2、插件管理器安装:https://www.cnblogs.com/xyztank/articles/16784330.html
3、官方说明文档:https://jmeter-plugins.org/wiki/UltimateThreadGroup/
4、https://mp.weixin.qq.com/s/4K7cnJQbgyXMKojfIpKi9A
5、https://blog.csdn.net/xiaodeng2017/article/details/125190975