如何在 运行 jMeter 时减少线程数?
How can I decrease the threads while running jMeter?
我在使用 jMeter 时创建了一个测试计划,我想创建一个具有 100 个并发用户的测试计划。
在第一页(主页)之后,我想减少 50 个用户(退出并且不访问下一页),而另外 50 个用户继续访问另一个页面。
有人建议我使用 Ultimate Thread Group,但我认为它无济于事。
对这个问题有什么想法吗?
如果您需要在第一个请求后关闭一半线程,您可以按如下方式进行:
- 在第一个请求后添加If Controller
在"Condition"区域输入以下表达式:
${__threadNum} % 2 == 0
添加 Test Action 采样器作为 If 控制器的子项,并按如下方式配置:
- 目标:
Current Thread
- 操作:
Stop
解释:
- __threadNum() function returns 当前线程数
- 如果当前线程号是 even(2、4、6、8 等),该线程将转到测试动作采样器,因此它被关闭
- 所以第一个采样器将由 100 个线程执行,第二个(和后续采样器)将由 50 个线程执行,因为只剩下 50 个线程
- 测试动作采样器doesn't generate any results所以可以使用它,它不会出现在测试指标中
示例 Test Plan 结构:
你可以在你的主页后面添加一个吞吐量控制器,将你希望在只有50个用户的情况下执行的所有请求都添加到吞吐量控制器中。你有两个选择:
执行百分比:0-100 之间的一个数字,表示控制器将执行的次数百分比。 “50”表示控制器将在测试计划的一半迭代期间执行。
Total executions:对于total execution模式,数字表示控制器将执行的总次数。
查看 Jmeter 用户手册中的 Throughput Controller 了解更多信息。
我在使用 jMeter 时创建了一个测试计划,我想创建一个具有 100 个并发用户的测试计划。
在第一页(主页)之后,我想减少 50 个用户(退出并且不访问下一页),而另外 50 个用户继续访问另一个页面。
有人建议我使用 Ultimate Thread Group,但我认为它无济于事。
对这个问题有什么想法吗?
如果您需要在第一个请求后关闭一半线程,您可以按如下方式进行:
- 在第一个请求后添加If Controller
在"Condition"区域输入以下表达式:
${__threadNum} % 2 == 0
添加 Test Action 采样器作为 If 控制器的子项,并按如下方式配置:
- 目标:
Current Thread
- 操作:
Stop
- 目标:
解释:
- __threadNum() function returns 当前线程数
- 如果当前线程号是 even(2、4、6、8 等),该线程将转到测试动作采样器,因此它被关闭
- 所以第一个采样器将由 100 个线程执行,第二个(和后续采样器)将由 50 个线程执行,因为只剩下 50 个线程
- 测试动作采样器doesn't generate any results所以可以使用它,它不会出现在测试指标中
示例 Test Plan 结构:
你可以在你的主页后面添加一个吞吐量控制器,将你希望在只有50个用户的情况下执行的所有请求都添加到吞吐量控制器中。你有两个选择:
执行百分比:0-100 之间的一个数字,表示控制器将执行的次数百分比。 “50”表示控制器将在测试计划的一半迭代期间执行。
Total executions:对于total execution模式,数字表示控制器将执行的总次数。
查看 Jmeter 用户手册中的 Throughput Controller 了解更多信息。