【发布时间】:2022-01-23 04:14:54
【问题描述】:
我正在使用 JSR-223 Timer (jMeter 5.4.1),使用 groovy 语言,并尝试向我的线程添加延迟\暂停。
我正在遵循 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 是我在 Flow Control Sampler 中使用的变量。
现在奇怪的结果: 我实现的实际延迟是计算的两倍。在本例中,延迟为 5K mSec,但实际延迟为 10K mSec。
现在这是真正奇怪的问题:
如果我标记出return iPacing,则延迟为 5K 毫秒根据需要(在日志文件中带有警告消息)。
请参阅下面的输出。
为什么流控制采样器会添加 myDelay 和 iPacing 值?
返回第一个块 - iPacing。整体暂停是 myDelay + iPacing。
第二个块 - iPacing 被标记出来。延迟仅为 myDelay。
【问题讨论】: