Jmeter模拟真实用户压测场景之阶梯螺纹线程组、终极线程组、并发线程组实例

我们有时需要模拟非常真实复杂的用户压测场景,可以用到此插件来设计场景

1、安装插件,选项——Plugins Manager打开安装页面

2、搜索standard set并安装,重启jmeter,查看测试计划——添加线程组——jp@gc - Stepping Thread Group (deprecated

3、Stepping Thread Group复杂场景线程组

This group will start 100 threads【(并发数)设置单台负载机,线程组启动的线程总数为100个】

First,wait for 2 seconds【等待2s后开始起线程】

Then start 3 threads【设置最开始时启动3个线程】

Next,add 10 threads every 30 seconds,using ramp-up 5 seconds:每隔5秒,在5秒内启动10个线程【5s启动10个线程运行30s,再5s启动余下10个线程,再运行30s,以此类推】

Then hold load for 60 seconds【单台负载机启动的线程总数达到最大值100线程后,再持续运行60秒(一直在请求,相当于jmeter普通线程组里面的循环运行)】

Finally,stop 5 threads every 2 seconds【5个线程停1次,等2s再停5个线程】

举个例子:一个线程组下包含了登陆和抽奖两个接口

1、继续:如果登陆接口失败,会继续执行抽奖接口

2、start next thread loop:主要针对循环次数>=2的时候。在loop1的时候,如果登陆接口失败,会停止loop1开始loop2,重新执行循环接口;所以如果循环次数设置为1的时候,其实就是结束了线程。

3、停止线程:比如有50个线程,循环次数=2;线程2的登陆接口失败之后,直接停止线程2,不再循环

4、停止测试:如果接口失败就停止线程,但是已经执行中的线程需要等结束之后自动停止

5、stop test now:立刻停止所有线程,包括已经执行中的线程。

6、this group will start:表示总共要生成的线程数,如图:设置为20000个,表示总共会加载到20000个线程

7、first,wait for:第一个线程从点击执行之后多长时间开始加载,如图:设置为0秒,表示点击执行之后立即执行

8、then start:初次加载多少个线程,如图:设置为1000个,表示初次会加载1000个线程(在60秒内)

9、next add:之后每次加载多少个线程,如图:设置为5000个,表示每次多加载5000个线程

10、threads every:当前运行多长时间后再次加载线程,及每一次加载完成之后的持续时间,如图:设置为600秒,每次加载完之后持续执行600秒

11、using ramp-up:加载线程的时间,如图:设置为60秒,表示每一次加载需要在60秒内完成

12、then hold load for:线程全部加载完之后运行多长时间,如图:设置为300秒,表示最后20000个线程加载完之后再持续300秒

13、finally,stop/threads every:每多长时间停止多少个线程,如图:设置为10个和1秒,表示每1秒钟停止10个线程

4、Ultimate Thread Group终极线程组、阶梯线程组

提供了一个'Threads Schedule' 线程计划表,您可以在其中配置不同的线程组。您可以决定

线程数量('Start Threads Count')

每组开始添加到测试执行之前的延迟('Initial Delay,sec')

线程组的加速期('Startup Time') ,sec')

在减速前线程组的持续时间('Hold Load For,sec')

所有线程组应该关闭的速度('Shutdown Time')

所有线程组同时启动,但每个线程组都有自己的Intial Delay“初始延迟”值,这有助于分别从每个组中分离用户。

示例一:

最后的10s停止阶段,每s停止30线程

示例二:模拟浪潮式的压测场景

常见的场景:

12306开始售票时用户急剧增加

网站公布高考成绩、录取分数时,用户急剧增加

网站投放商业促销广告和促销活动,如双11和618等活动开始时,用户急剧增加

并发的用户就像浪花一波一波的不断涌入系统,拍打服务器,考验我们的系统能否顶住压力并平稳运行

我们的网站正在平稳运行的时候,突然有一波1000用户同时访问,我们称之为第一浪潮。访问了30s之后,第一浪潮在15s内逐渐退出系统。

在第一浪潮退出系统的同时,第二波2000用户在极短时间内又突然涌入网站,我们称之为第二浪潮。在访问30s之后,第二浪潮在15s内也逐渐退出了系统。

在第二浪潮退出系统的同时,第三波3000用户又突然涌入网站,我们称之为第三浪潮。在访问30s之后,第三浪潮在15s内也逐渐退出了系统。

在第三浪潮退出系统的同时,第四波1000用户又突然涌入网站,我们称之为第四浪潮。在访问30s之后,第四浪潮在15s内也逐渐退出了系统。

5、并发线程组bzm - Concurrency Thread Group阶梯式加压

Target Concurrency:目标并发(线程数)

Ramp Up Time:加速时间

Ramp-Up Steps Count:加速步骤计数

Hold Target Rate Time:保持目标速率时间

Time Unit:时间单位(分钟或者秒)

Thread Iterations Limit:线程迭代次数限制(循环次数)

Log Threads Status into File:将线程状态记录到文件中(将线程启动和线程停止事件保存为日志文件);