几个jmeter吞吐量相关插件
准备
测试接口:获取系统时间
1 | GET http://192.168.0.1:8080/api/v1/Other/GetServiceTime |
jmeter脚本结构:
1 | -- 线程组 |
吞吐量控制器(Throughput Controller)
这个组件,其实按照我们的理解,不应该翻译成吞吐量控制器,这个组件的作用是控制子节点执行频率,有两个控制方式:
- Total Executions(执行总次数):控制执行次数
- Percent Executions(执行百分比):执行设置的测试计划的总测试次数的百分比
- 测试计划总测试次数在线程组处设置,总次数=(Number of Threaders(users) * Loop Count)
这两个很好理解,选择模式为总次数,设置几次,就执行几次;选模式为百分比,执行次数就是总次数的百分之n
这个组件,还有个per user
选项
勾选:会按照每个线程单独计算吞吐量,如线程组设置了5个线程,循环次数为2的情况,吞吐量为1时,吞吐量的子节点每个线程执行一次,总共会执行5次。
不勾选:按照全局的执行数次进行计数,如线程组设置了5个线程,循环次数为2的情况,吞吐量为1时,吞吐量的子节点仅会执行一次。
实验
线程组:5个线程,循环次数2次(测试计划总次数为10)
没有 Throughput Controller 这个组件,直接执行,在查看结果树种会有10条记录;
有Throughput Controller,模式选择Total Executions,Throughput设置为1,不勾选
Per User
,点击执行,查看结果树会有1条记录;(设置的throughput)有Throughput Controller,模式选择Total Executions,Throughput设置为1,勾选
Per User
,点击执行,查看结果树会有5条记录;(线程数*设置的throughput)有Throughput Controller,模式选择Percent Executions,Throughput设置为40,不勾选
Per User
,点击执行,查看结果树会有4条记录;(设置的throughput% * 总次数)有Throughput Controller,模式选择Percent Executions,Throughput设置为40,勾选
Per User
,点击执行,查看结果树会有5条记录;(一个用户的吞吐量(1循环次数)设置的throurhput%,四舍五入之后,相加 )(注意会有四舍五入,所以,当百分比设置为20%时候,一个用户的吞吐量的20%就是 1220%,直接四舍五入成了0,最后在查看结果树,就看不见执行记录)
Constant Timer
这个就可以理解为 思考时间(thinktime),单位是毫秒
作用域为当前线程组
实验
jmeter测试脚本层级:
1 | -- 线程组 |
点击执行,在点击执行后3s,GetServiceTim1开始执行,再过3s,GetServiceTim2执行,以此类推
Constant Throughput Timer(固定QPS)
这个组件就是给需要特定QPS的场景,组件里有两个菜单:
Target throughput(in samples per minute):目标QPS,单位是分钟,1200/min -> 20/s
Calculate Throughput based on:计算基准,有五种
1 | This thread only :分别控制每个线程的吞吐量,选择这种模式时,总的吞吐量为设置的 target Throughput 乘以线程的数量 |
实验
线程数设置为10,循环次数:永远,持续时间90s
jmeter 脚本层级结构:
1 | -- 线程组 |
target throughput设置:1200/m(20/s),模式选择:this thread only,点击执行,当前QPS为
20*10(线程数)=200/s
target throughput设置:1200/m(20/s),模式选择: All active threads,点击执行,当前QPS为
20/s
(All active threads (shared )和All cative threads in current thread group (shared )没怎么实验,感觉至少没怎么用到。。。主要是懒。。)
完~