今天我们来浅谈一下阶梯压测,那么,什么是阶梯压测,什么时候做阶梯压测,阶梯压测和普通压测又有什么区别呢?
阶梯压测:阶梯压测,实际上就是对系统的压力呈现阶梯式增加的压力测试,每隔一段时间按照配置的"步进值"进行增加压力,并保持持续运行一段时间,直到压力值达到预期的值后,保持一段时间运行,最后进行释放。
那么什么时候我们可以做阶梯压测,通常常规的压力测试,在不知道系统压力瓶颈的时候,我们会不断重复以下步骤:
1、预估一个系统瓶颈值
2、执行压力测试
3、查看执行结果
4、调整系统的瓶颈值
不断的重复以上步骤后,我们会得到一个比较满意的压力值,但是这样通常很浪费时间和系统资源,那么为了解决这个问题,阶梯压测应运而生,它能够快速的找到服务器的性能极限值,接下来,我们就来看下这个插件是怎么使用的,目前jmeter中可以做阶梯压测的两个插件分别是:Stepping Thread Group和Concurrency Thread Group,前者官方已经宣布废弃了,本文主要针对Concurrency Thread Group插件做介绍
首先,要使用这个插件,我们需要安装一个jmeter-plugins插件,下载地址:https://jmeter-plugins.org/install/Install/,下载完成后,我们将该jar包放在jmeter的../lib/ext目录下,如下所示
然后启动或者重启jmeter,在jmeter的"选项"菜单中可以看到这个插件
继续点击"Plugins Manager"进入插件管理界面,选择"Custom Thread Groups",此时就可以看到我们需要做阶梯压测的线程组了
OK,插件已经安装完毕,我们创建一个该线程,看下整体界面的参数
下面我们详细介绍一下这个线程组的参数配置
Target Concurrency:目标并发数
Ramp Up Time:加速时间,即在多少时间之内达到预计并发目标数
Ramp-Up Steps Count:加速次数,加速多少次达到预计并发目标数,通过Target Concurrency和Ramp-Up Steps Count两个参数可以计算出阶梯的步进值,"步进值=Target Concurrency/Ramp-Up Steps Count"
Hold Target Rate Time:保持目标速率时间,达到最大并发数后,需要持续运行的时间
Time Unit:时间单位,可以选择分或者秒
Thread Iterations Limit:线程迭代次数限制,即循环次数(空,即为一次)
Log Threads Status into File:将线程状态记录到文件中(保存日志文件)
了解了上面参数的含义,那上图中配置的参数翻译一下就是"20秒启动100个线程,分为5次进行加压,每次加压的步进值是20个,且每次加压后保持运行5秒再加压,直到达到预期100个线程的时候,再持续运行10秒钟"
一般我们将Concurrency Thread Group与Active Threads Over Time监视器一起使用,这样,我们就能够清晰的看见每个阶段中线程组的运行情况
通过上图中配置的参数,我们来运行一下,看下Active Threads Over Time的显示结果
从这个图能够清晰的看到,不同的时间段,服务器处于不同的压力中,服务器压力呈现阶梯式增长的态势