Jmeter:如何控制线程组中的http采样器请求在100个线程中只运行一次
Jmeter: How to control a http sampler request in a thread group to run only once among 100 threads
我有一个线程组到 运行 供 100 多个用户使用,因为需要对所有线程只执行一次特定的 http 请求。我知道 "Once only Controller" 但它每个线程执行一次子采样器,这就是为什么它不满足这里的要求:
如图所示:"once only controller" 运行 每个线程仅请求 E 和 F 一次,其中 我对 运行 采样器的要求只为所有线程 A、B、C 和 D 请求一次 E & F。话虽如此,如果我 运行 100+ 线程请求 E & F 应该 运行 只有 1 次。
有没有办法在 jmeter 中实现这个?
问题截图:
没有直接的逻辑控制器可以实现这一点。通常这种类型的要求应该是 setup
或 tear down
线程组的一部分。
如果它必须是您的常规线程组的一部分,则可以通过使用一些解决方法来实现。示例:
Once Only Controller + If Controller:
如果控制器仅在 ${__threadNum} == 1
时才会执行 E & F。这样我们就可以阻止其他线程执行 E & F
将您的请求 E
和 F
放在 If Controller 下并使用以下条件:
${__BeanShell(ctx.getThreadNum() == 0 && vars.getIteration() == 1)}
其中:
- __Beanshell() - JMeter Function allowing execution of arbitrary Beanshell代码
ctx
- shorthand 用于 JMeterContext class 实例
vars
- shorthand 用于 JMeterVariables class 实例
我有一个线程组到 运行 供 100 多个用户使用,因为需要对所有线程只执行一次特定的 http 请求。我知道 "Once only Controller" 但它每个线程执行一次子采样器,这就是为什么它不满足这里的要求:
如图所示:"once only controller" 运行 每个线程仅请求 E 和 F 一次,其中 我对 运行 采样器的要求只为所有线程 A、B、C 和 D 请求一次 E & F。话虽如此,如果我 运行 100+ 线程请求 E & F 应该 运行 只有 1 次。
有没有办法在 jmeter 中实现这个?
问题截图:
没有直接的逻辑控制器可以实现这一点。通常这种类型的要求应该是 setup
或 tear down
线程组的一部分。
如果它必须是您的常规线程组的一部分,则可以通过使用一些解决方法来实现。示例:
Once Only Controller + If Controller:
如果控制器仅在 ${__threadNum} == 1
时才会执行 E & F。这样我们就可以阻止其他线程执行 E & F
将您的请求 E
和 F
放在 If Controller 下并使用以下条件:
${__BeanShell(ctx.getThreadNum() == 0 && vars.getIteration() == 1)}
其中:
- __Beanshell() - JMeter Function allowing execution of arbitrary Beanshell代码
ctx
- shorthand 用于 JMeterContext class 实例vars
- shorthand 用于 JMeterVariables class 实例