【问题标题】:JSR-233 Timer strange(?) behaviorJSR-233 定时器奇怪(?)行为
【发布时间】: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 毫秒根据需要(在日志文件中带有警告消息)。

请参阅下面的输出。 为什么流控制采样器会添加 myDelayiPacing 值?

返回第一个块 - iPacing。整体暂停是 myDelay + iPacing。 第二个块 - iPacing 被标记出来。延迟仅为 myDelay。

【问题讨论】:

    标签: jmeter jsr223


    【解决方案1】:

    您的延迟是 TWICE 只是因为您设置了 TWICE。

    此声明:

    return iPacing;
    

    将在 JSR223 时间 SCOPE 中的每个 SAMPLER 之前创建一个延迟

    因此无需使用Flow Control Action 采样器,因为您已经在 J​​SR223 计时器中创建了延迟。

    一般来说,在 JMETER 中没有实现 PACING,因为有一种更简单的方法可以创建每秒 X 个请求的负载:Constant THROUGHPUT timer 和朋友。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-11
      • 1970-01-01
      相关资源
      最近更新 更多