一.前言
在做性能测试的时候,在某些场景下需要逐渐加压,这里就和大家分享下jmeter逐渐加压的方法!
二.三种逐渐加压方式
备注:普通的压测方式,并发的Samples是可预知的;而阶梯压测是未知的。
1.Stepping Thread Group
比较老,适用于复杂场景线程组(单线程组),官网推荐用Ultimate Thread Group代替。
下载工具(JMeterPlugins-Standard.jar)
使用方法:将JMeterPlugins-Standard.jar包放在jmeter安装目录的\lib\ext路径下,重新启动jemter即可
This group will start N threads:设置线程组启动的线程总数为N个;
First,wait for N seconds:启动第一个线程之前,需要等待N秒;
Then start N threads:设置最开始时启动N个线程;Z
Next,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
下载工具(jmeter-plugins-manager-1.3.jar)
https://jmeter-plugins.org/install/Install/
使用方法:下载Plugins Manager JAR文件并将其放入JMeter的lib / ext目录中。然后启动JMeter并转到“选项”菜单以访问插件管理器。
在插件中安装Concurrency Thread Group:
注意:这里只需要等待安装就行了,可能要需要2-3分钟,安装好后jmeter会自动重启的
Target Concurrency: 100 预期客户端最大并发线程数为100
Ramp Up Time(min): 0.5 在30秒内启动100个线程
Ramp-up Steps Count: 20 在上述时间内,分20次启动
Hold Target Rate Time (min): 0.5达到目标并发线程数300后,再并发运行30秒
Thread Iterations Limit:线程迭代次数限制,即循环次数(空,即为一次)(无特殊情况,建议不设置该选项的值)
Log Threads Status into File:将线程状态记录到文件中(保存日志文件)
3.Ultimate Thread Group
https://jmeter-plugins.org/install/Install/
参数含义解释:
Start Threads Count:当前行启动的线程总数
Initial Delay/sec:延时启动当前行的线程,单位:秒
Startup Time/sec:启动当前行所有线程达峰值所需时间,单位:秒
Hold Load For/sec:当前行线程达到峰值后的稳定加载时间,单位:秒
Shutdown Time:停止当前行所有线程所需时间,单位:秒
上图含义:
第一个线程:没有延时,在10秒内启动100个线程数,到达100个后稳定运行60秒后,在再10秒内结束100个线程数。第二、第三线程同理。
根据以上描述可以计算两个阶段的拐点值。
三.查看结果
以上阶梯式压测可以添加 jp@gc - Active Threads Over Time 察看具体请求结果图