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模式的执行次数=吞吐量。