如何在 运行 jMeter 时减少线程数?

How can I decrease the threads while running jMeter?

我在使用 jMeter 时创建了一个测试计划,我想创建一个具有 100 个并发用户的测试计划。

在第一页(主页)之后,我想减少 50 个用户(退出并且不访问下一页),而另外 50 个用户继续访问另一个页面。

有人建议我使用 Ultimate Thread Group,但我认为它无济于事。

对这个问题有什么想法吗?

如果您需要在第一个请求后关闭一半线程,您可以按如下方式进行:

  1. 在第一个请求后添加If Controller
  2. 在"Condition"区域输入以下表达式:

    ${__threadNum} % 2 == 0
    
  3. 添加 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 了解更多信息。