如果在多个线程上跳过条件? (JMeter)

If condition is skipped on multiple threads? (JMeter)

经过长时间的阅读,这是我第一次post来到这里。 :)

我的问题如下: 使用 JMeter,我必须执行 10000 个请求,但在每 1000 个请求之间,我应该有睡眠时间(从 0 到 1000 => 睡眠时间 => 从 1000 到 2000 => 睡眠时间 => ...)。

我能够使用 if 子句和“__counter(FALSE,)”在每 1000 个请求之间暂停一次来做到这一点,但它只在一个线程上工作。如果我设置 >1 个线程,它会跳过 if 子句和睡眠时间未激活。据我所知,“counter”函数的第一个参数如果为 FALSE 则使其成为“全局”,但我很困惑为什么如果使用多个线程,则跳过 if 子句。

我正在使用 groovy func 检查计数器:${__groovy("${__counter(FALSE,)}" == "1000")}

  1. 你怎么知道“睡眠时间没有激活”?

  2. 你的“休眠时间”只会在计数器达到1000时被“激活”一次,2000等不满足条件

  3. 将 JMeter 函数或变量内联到 Groovy 脚本中是 not very recommended, consider switching to __jexl3() function 并将表达式更改为:

    ${__jexl3(${__counter(FALSE,)} % 1000 == 0,)}
    

演示:

更多信息:6 Tips for JMeter If Controller Usage