1,使用jmeter-plugins-manager-1.4包
2,放在图中位置里 lib\ext
3,重启jmeter
4,点击图中标记位置
5,勾选图中
6,
7,使用图中
JMeter Concurrency Thread Group阶梯式加压
前言
在实际压测过程中用户在做不同操作之间有时间停顿,或者延迟,思考时间就是模拟用户的操作过程中的停顿的间
同时需要注意:步伐,速度,主要包括,大量用户发送请求和退出时间,控制迭代之间的时间,例如,现场用户10个,设置5秒内全部进入
压力测试时间:假如需要100个人同时测试20分钟,这里持续20分钟就是压测时间。
在以上几点中HP loadrunner 负载场景设置由为强大,而jmeter本身场景设置插件功能较弱,则需要使用 Stepping Thread Group 插件来完成
Stepping Thread Group的特性
可使用预览图显示设置的负载
可延迟启动执行各线程组
可持续增加执行负载
可设置最大负载的持续运行时间
Stepping Thread Group的作用
减少服务器在某个瞬间的压力,做性能测试应该持续加压,而是瞬间加压
逐步增压越平缓越好,更容易从结果看到多少压力值下,有性能瓶颈
安装的插件
打开JMeter上的plugin manager,点击AvailablePlugns下拉滚动条到底部,勾选Custom Thread Group,点击右下角的Apply Changes and Restart JMeter,安装好了会出现在Installed Plugins列表里。
Stepping Thread Group参数详解
this group will start:表示总共要启动执行的线程数;若设置为 100,表示总共会加载到 100 个线程
first,wait for:从运行之后多长时间开始启动线程执行;若设置为 0 秒,表示运行之后立即启动线程执行
then start:初次启动多少个执行线程;若设置为 0 个,表示初次不启动执行线程
next add:之后每次启动加载多少个线程;若设置为 10个,表示每个梯次启动10 个线程
threads every:当前运行多长时间后再次启动加载线程,即每一次线程加载完成的持续运行时间;若设置为 30 秒,每梯次启动完执行完成后再运行 30 秒
using ramp-up:启动执行的的时间;若设置为 5 秒,表示每次启动执行线程都持续 5 秒(和基础执行绪组的ramp-up一样意思)
then hold load for:执行线程全部启动完之后持续运行多长时间,如图:设置为 60 秒,表示 100 个执行绪全部启动完之后再持续运行 60 秒
finally,stop/threads every:多长时间释放多少个线程;若设置为 5 个和 1 秒,表示持续负载结束之后每 1 秒钟释放 5 个线程
从第0秒开始启动线程,每 5 秒内启动10个线程并且运行30秒,以此循环,直到一共启动了 100 个执行绪
当已经启动 100 个线程后,持续运行60秒
持续负载运行60秒后,每 1 秒释放五个线程,直到全部线程被释放【注意:执行线程释放放过程中,执行的线程依然在运行】
Concurrency Thread Group介绍
Concurrency Thread Group提供了用于配置多个线程计划的简化方法
该线程组目的是为了保持并发水平,意味着如果并发线程不够,则在运行线程中启动额外的线程
和Standard Thread Group不同,它不会预先创建所有线程,因此不会使用额外的内存
对于上篇讲到的Stepping Thread Group来说,Concurrency Thread Group是个更好的选择,因为它允许线程优雅地完成其工作
Concurrency Thread Group提供了更好的用户行为模拟,因为它使您可以更轻松地控制测试的时间,并创建替换线程以防线程在过程中完成
Target Concurrency:目标并发(线程数)
Ramp Up Time:启动时间;若设置 1 min,则目标线程在1 imn内全部启动
Ramp-Up Steps Count:阶梯次数;若设置 6 ,则目标线程在 1min 内分六次阶梯加压(启动线程);每次启动的线程数 = 目标线程数 / 阶梯次数 = 60 / 6 = 10
Hold Target Rate Time:持续负载运行时间;若设置 2 ,则启动完所有线程后,持续负载运行 2 min,然后再结束
Time Unit:时间单位(分钟或者秒)
Thread Iterations Limit:线程迭代次数限制(循环次数);默认为空,理解成永远,如果运行时间到达Ramp Up Time + Hold Target Rate Time,则停止运行线程【不建议设置该值】
Log Threads Status into File:将线程状态记录到文件中(将线程启动和线程停止事件保存为日志文件);
特别注意点
Target Concurrency只是个期望值,实际不一定可以达到这个并发数,得看上面的配置【电脑性能、网络、内存、CPU等因素都会影响最终并发线程数】
Jmeter会根据Target Concurrency的值和当前处于活动状态的线程数来判断当前并发线程数是否达到了Target Concurrency;若没有,则会不断启动线程,尽力让并发线程数达到Target Concurrency的值
Concurrency Thread Group和Stepping Thread Group的区别
Stepping Thread Group不提供阶梯释放过渡时间,但Concurrency Thread Group提供
Stepping Thread Group可以阶梯释放线程,而Concurrency Thread Group是瞬时释放(具体看下面介绍)
Stepping Thread Group设置了需要启动多少个线程就会严格执行,Concurrency Thread Group会尽力启动线程达到Target Concurrency值
通俗点理解
Stepping Thread Group 是手动场景:测试过程,按照设定好的步骤执行
Concurrency Thread Group 是目标场景:达到某个目标运行场景,测试过程不可控,动态变化
类比 loadrunner
Stepping Thread Group :设置并发用户数,持续时间等,每隔多少时间自动增加多少个用户
Concurrency Thread Group:预设一个目标并发数,每隔一段时间增加一部分并发数,直到 TPS 达到目标并发数,然后持续运行一段时间