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:25
    • Initial Delay/sec:0秒
    • Startup Time/sec:1秒
    • Hold Load For/sec:300秒
    • Shutdown Time:0秒
  • 表示在1秒内增加25个线程,并持续加压300秒。

    • Start Threads Count:25
    • Initial 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

posted @ 2022-10-13 11:50  xyztank  阅读(1421)  评论(0编辑  收藏  举报