Throughput Contoller,直译是吞吐量控制器,它是用来控制该控制器下面元件的执行次数,与控制吞吐量的功能无关。(注:用Constant Throughput Timer可以控制吞吐量。)
Throughput Contoller有两种模式:Total Executions 和Percent Executions。
参数说明如下:
- Total Executions:按吞吐量值来指定执行次数。选择此模式,吞吐量值的单位为“次”。
- Percent Executions:按百分比来指定执行次数。选择此模式,吞吐量值的单位为“%”。
- 吞吐量:该值可以是任意整数,如果小于等于0,则一次也不执行。
- Per User:如果勾选该项则按虚拟用户数(线程数)来计算执行次数,如果没有选中该项则按所有虚拟用户数来计算执行次数。
那么如何计算Throughput Controller其下的执行次数?
下面添加循环控制器,在Throughput Controller下添加Debug Sampler元件来做实验:
实验一:测试按Percent Executions模式执行次数
TestCase1:线程数3,线程循环次数2,循环控制器循环次数2,吞吐量值50%,勾选Per User
测试结果:查看“聚合报告”里Debug Sampler执行次数,Debug Sampler=6,即执行了6次,如图:
TestCase2:线程数3,线程循环次数2,循环控制器循环次数2,吞吐量值50%,不勾选Per User
测试结果,查看“聚合报告”里Debug Sampler执行次数,Debug Sampler=6,即执行了6次,如图:
TestCase1与TestCase2测试结果对比表:
线程数 | 线程组循环次数 | 控制器循环次数 | 模式 | 吞吐量值 | Per User | 执行次数 |
3 | 2 | 2 | Percent Executions | 50 | 勾选 | 6 |
3 | 2 | 2 | Percent Executions | 50 | 不勾选 | 6 |
由此,得出结论:
无论Per User是否勾选,按Percent Executions模式的执行次数都不受Per User影响,Percent Executions模式的执行次数=线程数*循环次数*吞吐量%。
PS:循环次数=线程组循环次数*循环控制器循环次数。
实验二:测试按Total Executions模式执行次数
同样,按照实验一的初始条件不变:线程数3,线程循环次数2,循环控制器循环次数2,然后改变吞吐量值和是否勾选Per User来做实验。
测试的实验结果如下表:
线程数 | 线程组循环次数 | 控制器循环次数 | 模式 | 吞吐量值 | Per User | 执行次数 |
3 | 2 | 2 | Total Executions | 13 | 勾选 | 12 |
3 | 2 | 2 | Total Executions | 13 | 不勾选 | 12 |
3 | 2 | 2 | Total Executions | 12 | 勾选 | 12 |
3 | 2 | 2 | Total Executions | 12 | 不勾选 | 12 |
3 | 2 | 2 | Total Executions | 11 | 勾选 | 12 |
3 | 2 | 2 | Total Executions | 11 | 不勾选 | 11 |
3 | 2 | 2 | Total Executions | 10 | 勾选 | 12 |
3 | 2 | 2 | Total Executions | 10 | 不勾选 | 10 |
3 | 2 | 2 | Total Executions | 5 | 勾选 | 12 |
3 | 2 | 2 | Total Executions | 5 | 不勾选 | 5 |
3 | 2 | 2 | Total Executions | 4 | 勾选 | 12 |
3 | 2 | 2 | Total Executions | 4 | 不勾选 | 4 |
3 | 2 | 2 | Total Executions | 3 | 勾选 | 9 |
3 | 2 | 2 | Total Executions | 3 | 不勾选 | 3 |
3 | 2 | 2 | Total Executions | 2 | 勾选 | 6 |
3 | 2 | 2 | Total Executions | 2 | 不勾选 | 2 |
分析数据,得出结论:
- 当勾选Per User时:
- 线程数*循环次数>=线程数*吞吐量时,Total Executions模式的执行次数=线程数*吞吐量。
- 当线程数*循环次数<线程数*吞吐量时,Total Executions模式的执行次数=当线程数*循环次数。
- 当不勾选Per User时:
- 线程数*循环次数<=吞吐量时,Total Executions模式的执行次数=线程数*循环次数。
- 当线程数*循环次数>吞吐量时,Total Executions模式的执行次数=吞吐量。