Jmeter各类线程组详解( 三 )


这个线程就比较难以理解,但是功能也比较强大 。它可以对负载中的线程组进行复杂的管理 。通过在线程计划中具有无限数量的行来完成此操作,这可以为线程组的不同部分启用不同的配置 。该插件跟Stepping Thread Group线程组有些类似,不过这个是多个线程组设置的结合 。执行的时候,每个线程组是同时按照自己的规则开始执行的,每一时刻,得到的结果都是两个线程组的叠加 。
形象比喻:
并发的用户就像浪花一波一波的不断涌入系统,拍打服务器,考验我们的系统能否顶住压力并平稳运行
我们的网站正在平稳运行的时候,突然有一波1000用户同时访问,我们称之为第一浪潮 。访问了30s之后,第一浪潮在15s内逐渐退出系统 。
在第一浪潮退出系统的同时,第二波2000用户在极短时间内又突然涌入网站,我们称之为第二浪潮 。在访问30s之后,第二浪潮在15s内也逐渐退出了系统 。
在第二浪潮退出系统的同时,第三波3000用户又突然涌入网站,我们称之为第三浪潮 。在访问30s之后,第三浪潮在15s内也逐渐退出了系统 。
在第三浪潮退出系统的同时,第四波1000用户又突然涌入网站,我们称之为第四浪潮 。在访问30s之后,第四浪潮在15s内也逐渐退出了系统 。
添加单个线程组Row 和 添加多个线程组Row:

Jmeter各类线程组详解

文章插图

Jmeter各类线程组详解

文章插图
图中本次测试一共启动100个线 编辑程(用户/并发) 。
· Initial Delay, sec:最开始延迟时间,单位秒 。设置为0,就是点击了立即执行 。
· Startup Time, sec:启动设置的100个线程并发一共需要的时间,单位秒 。图中设置10秒(线程组的加速期)
· Hold Load For, sec:保持加压时间,单位秒 。图中10秒 。
· Shutdown Time:多久时间内全部释放关闭,单位秒 。图中10秒 。
【实例】
1、需求:要求此接口用户的访问量“分波式”访问,每个时期、每波都有不同用户量访问,每波的用户访问量呈现出递增然后逐次递减的状态,单波用户量最大并发不可超过70 。
2、分析:根据需求实现具体场景,可得出普通线程组并不能实现,普通线程组一般实现为“直线式”的需求场景(配合其他元件实现略不同),那么此时Ultimate Thread Group线程组便可为之实现:
3、步骤:
第一步:根据需求场景“每个时期、每波都有不同用户量访问”现设置添加多Row,每Row的Start Threads Count(开始线程计数),初始用户的数量为:10、30、50、70、50、30、10,此时每波用户访问量递增→递减和单波用户不可超过70的需求配合关闭时间已经满足 。
第二步:每Row的Initial Delay,sec(延迟启动时间,单位秒)设置每时间间隔5s:0s、5s、10s、15s、20s、25s、30s,这样是为了满足不同组的启动延迟时间,若每个线程组不同的用户都在同一时间节点启动那不是递增式并发,那是同步式并发 。
第三步:每Row的Startup Time,sec(启动时间),意指每个线程组的线程在多少s内全部启动,目前设置为1s,即是每组线程组的线程数从启动开始到启动结束话费时长为1秒 。
第四步:每Row的Hold Load For,sec(持续运行),意指每个线程组的线程在启动达到设置的线程数后持续运行多长时间,单位秒 。此时需求每组线程运行后达到顶峰后呈现出“递减”状态,所以持续运行时间应该也是设置为递减:30、25、20、15、10、5、0(单位s) 。
第五步:Shutwn Time(关闭时间),这个可配合上面四个可设置:0、5、10、15、10、5、0 。这样是为了满足“每波用户访问量递增→递减”的需求
好啦主功能配置已经完成,看下具体线程组效果图:
Jmeter各类线程组详解

文章插图
此时,运行后为了确保线程组的变化运行轨迹,添加一个Active Threads Over Time用来查看随时间变化的活动线程:(添加路径:线程组→添加→监听器→jp@gc - Active Threads Over Time)
Jmeter各类线程组详解

文章插图
最后,即可添加察看结果树、聚合报告、响应时间图等分析此接口的接口各个返回指标等:
Jmeter各类线程组详解

文章插图
Ultimate Thread Group(最终线程组)实现原理:TA跟Stepping Thread Group线程组有些类似,不过这个是多个线程组设置的结合 。执行的时候,每个线程组是同时按照自己的规则开始执行的,每一时刻,得到的结果都是两个线程组的叠加 。


推荐阅读