特定 HTTP 请求中的 JMeter 异步延迟

JMeter Asynchronous Delay In Specific HTTP Requests

给定一个 API 有两个端点:

  1. submit
  2. result

假设需要 20 submits 之后 API 服务器开始计算特定用户的结果

鉴于这样的计算需要 1 到 5 秒才能完成

鉴于目前我的 JMeter 脚本能够成功提交所有这些内容,并且它不断查询 result endpoint 直到收到结果

考虑到我目前面临的恼人问题是,由于 result endpoint 是一个非常 light/quick 的请求(在结果尚未计算的情况下),更多请求最终到达 result endpoint 而不是提交端点。

并且考虑到这种行为会扭曲整体吞吐量的测量。

假设添加 Constant Timer 会阻塞整个请求线程,并且在计时器完成之前不会发出其他请求

那么我的问题是: JMeter 是否以一种或另一种方式提供以下能力:

  1. 确定请求的优先级(因此 results endpoint 的优先级较低)或
  2. 在异步基础上对 HTTP 请求引入延迟,这样 result endpoint 请求就不会占用我的所有注意力 API?

And given that adding a Constant Timer blocks the entire request thread and no other requests get made until the timer has completed

看起来你的样本在同一个线程组中,是吗?

如果是,则划分它:为您的 "result" 请求建立一个单独的线程组,并在那里设置您想要的时间。

虽然如果你先展示你的计划就更好了。

UPD:所以你需要在线程之间进行通信,正如它所显示的那样。

那你可以使用JMeter properties(这似乎是最简单粗暴的方法)。 或者使用文件或其他存储(例如一些简单的内存数据库)作为共享资源。 或者使用这个:https://jmeter-plugins.org/wiki/InterThreadCommunication/。 或者自己编写结合这些方法中的任何一种的东西。