JSR-233 计时器奇怪(?)行为
JSR-233 Timer strange(?) behavior
我正在使用 JSR-223 Timer (jMeter 5.4.1),使用 groovy 语言,并尝试将 delay\pauses 添加到我的线程。
我正在按照 BlazeMeter (How to Easily Implement Pacing) 的说明进行操作。
奇怪的(?)行为是实际延迟是所需的两倍。
脚本如下:
Long pacing = 5000 - prev.getTime();
Integer iPacing = pacing != null ? pacing.intValue() : null;
log.info("Transaction Pacing: " +String.valueOf(iPacing));
vars.put("myDelay", String.valueOf(iPacing));
return iPacing;
我得到采样器动作的持续时间,然后计算 "myDelay"
与 5,000 毫秒的基本持续时间的差值。 myDelay
是我在流量控制采样器中使用的变量。
现在奇怪的结果是:
我实现的实际延迟是计算的两倍。在这个例子中,延迟是5K mSec,但实际延迟是10K mSec。
现在真正奇怪的问题来了:
如果我标记 return iPacing
,则延迟为 5K 毫秒 根据需要 (日志文件中有一条警告消息)。
请参阅下面的输出。
为什么 Flow Control Sampler 添加 myDelay
和 iPacing
值?
返回第一个块 - iPacing
。整体暂停是myDelay + iPacing。
第二个块 - iPacing
被标记出来。延迟仅为 myDelay。
你的延迟是两倍,因为你设置了两次。
这条语句:
return iPacing;
将在每个 SAMPLER in the JSR223 Time SCOPE
之前创建一个延迟
因此无需使用 Flow Control Action 采样器,因为您已经在 JSR223 计时器中创建了延迟。
一般来说,JMETER 中没有实现 PACING,因为有一种更简单的方法可以根据每秒 X REQUESTS 来创建 LOAD:Constant THROUGHPUT timer 和朋友们。
我正在使用 JSR-223 Timer (jMeter 5.4.1),使用 groovy 语言,并尝试将 delay\pauses 添加到我的线程。
我正在按照 BlazeMeter (How to Easily Implement Pacing) 的说明进行操作。
奇怪的(?)行为是实际延迟是所需的两倍。
脚本如下:
Long pacing = 5000 - prev.getTime();
Integer iPacing = pacing != null ? pacing.intValue() : null;
log.info("Transaction Pacing: " +String.valueOf(iPacing));
vars.put("myDelay", String.valueOf(iPacing));
return iPacing;
我得到采样器动作的持续时间,然后计算 "myDelay"
与 5,000 毫秒的基本持续时间的差值。 myDelay
是我在流量控制采样器中使用的变量。
现在奇怪的结果是: 我实现的实际延迟是计算的两倍。在这个例子中,延迟是5K mSec,但实际延迟是10K mSec。
现在真正奇怪的问题来了:
如果我标记 return iPacing
,则延迟为 5K 毫秒 根据需要 (日志文件中有一条警告消息)。
请参阅下面的输出。
为什么 Flow Control Sampler 添加 myDelay
和 iPacing
值?
返回第一个块 - iPacing
。整体暂停是myDelay + iPacing。
第二个块 - iPacing
被标记出来。延迟仅为 myDelay。
你的延迟是两倍,因为你设置了两次。
这条语句:
return iPacing;
将在每个 SAMPLER in the JSR223 Time SCOPE
之前创建一个延迟因此无需使用 Flow Control Action 采样器,因为您已经在 JSR223 计时器中创建了延迟。
一般来说,JMETER 中没有实现 PACING,因为有一种更简单的方法可以根据每秒 X REQUESTS 来创建 LOAD:Constant THROUGHPUT timer 和朋友们。