jmeter吞吐量几个插件介绍

几个jmeter吞吐量相关插件

准备

测试接口:获取系统时间

1
GET http://192.168.0.1:8080/api/v1/Other/GetServiceTime

jmeter脚本结构:

1
2
3
4
5
6
7
-- 线程组
-- HTTP信息头管理器
-- Throughput Controller 1
-- GetService Time 1
-- Throughput Controller 2
-- GetService Time 2
-- 查看结果树

吞吐量控制器(Throughput Controller)

这个组件,其实按照我们的理解,不应该翻译成吞吐量控制器,这个组件的作用是控制子节点执行频率,有两个控制方式:

  1. Total Executions(执行总次数):控制执行次数
  2. Percent Executions(执行百分比):执行设置的测试计划的总测试次数的百分比
  • 测试计划总测试次数在线程组处设置,总次数=(Number of Threaders(users) * Loop Count)

这两个很好理解,选择模式为总次数,设置几次,就执行几次;选模式为百分比,执行次数就是总次数的百分之n

这个组件,还有个per user选项

  • 勾选:会按照每个线程单独计算吞吐量,如线程组设置了5个线程,循环次数为2的情况,吞吐量为1时,吞吐量的子节点每个线程执行一次,总共会执行5次。

  • 不勾选:按照全局的执行数次进行计数,如线程组设置了5个线程,循环次数为2的情况,吞吐量为1时,吞吐量的子节点仅会执行一次。

实验

线程组:5个线程,循环次数2次(测试计划总次数为10)

  1. 没有 Throughput Controller 这个组件,直接执行,在查看结果树种会有10条记录;

  2. 有Throughput Controller,模式选择Total Executions,Throughput设置为1,不勾选Per User,点击执行,查看结果树会有1条记录;(设置的throughput)

  3. 有Throughput Controller,模式选择Total Executions,Throughput设置为1,勾选Per User,点击执行,查看结果树会有5条记录;(线程数*设置的throughput)

  4. 有Throughput Controller,模式选择Percent Executions,Throughput设置为40,不勾选Per User,点击执行,查看结果树会有4条记录;(设置的throughput% * 总次数)

  5. 有Throughput Controller,模式选择Percent Executions,Throughput设置为40,勾选Per User,点击执行,查看结果树会有5条记录;(一个用户的吞吐量(1循环次数)设置的throurhput%,四舍五入之后,相加 )(注意会有四舍五入,所以,当百分比设置为20%时候,一个用户的吞吐量的20%就是 1220%,直接四舍五入成了0,最后在查看结果树,就看不见执行记录)

Constant Timer

这个就可以理解为 思考时间(thinktime),单位是毫秒

作用域为当前线程组

实验

jmeter测试脚本层级:

1
2
3
4
5
6
7
8
-- 线程组
-- HTTP信息头管理器
-- GetServiceTim1-${__time(YMDHMS,)}
-- Constant Timer(3000 ms)
-- GetServiceTim2-${__time(YMDHMS,)}
-- GetServiceTim3-${__time(YMDHMS,)}
-- GetServiceTim4-${__time(YMDHMS,)}
-- 查看结果树

点击执行,在点击执行后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
2
3
4
5
6
7
8
9
This thread only :分别控制每个线程的吞吐量,选择这种模式时,总的吞吐量为设置的 target Throughput 乘以线程的数量

All active threads : 设置的target Throughput 将分配在每个活跃线程上,每个活跃线程在上一次运行结束后等待合理的时间后再次运行。活跃线程指同一时刻同时运行的线程。

All active threads in current thread group :设置的target Throughput将分配在当前线程组的每一个活跃线程上,当测试计划中只有一个线程组时,该选项和All active threads选项的效果完全相同。

All active threads (shared ):与All active threads 的选项基本相同,唯一的区别是,每个活跃线程都会在所有活跃线程上一次运行结束后等待合理的时间后再次运行。

All cative threads in current thread group (shared ):与All active threads in current thread group 基本相同,唯一的区别是,每个活跃线程都会在所有活跃线程的上一次运行结束后等待合理的时间后再次运行。

实验

线程数设置为10,循环次数:永远,持续时间90s
jmeter 脚本层级结构:

1
2
3
4
5
6
7
-- 线程组
-- HTTP信息头管理器
-- Constant Throughput Timer
-- GetServiceTime接口
-- 查看结果树
-- 聚合报告
-- jp@gc - Transactions per Second
  1. target throughput设置:1200/m(20/s),模式选择:this thread only,点击执行,当前QPS为 20*10(线程数)=200/s

  2. target throughput设置:1200/m(20/s),模式选择: All active threads,点击执行,当前QPS为 20/s
    (All active threads (shared )和All cative threads in current thread group (shared )没怎么实验,感觉至少没怎么用到。。。主要是懒。。)

完~

文章目录
  1. 准备
  2. 吞吐量控制器(Throughput Controller)
    1. 实验
  3. Constant Timer
    1. 实验
  4. Constant Throughput Timer(固定QPS)
    1. 实验
|