特定 HTTP 请求中的 JMeter 异步延迟
JMeter Asynchronous Delay In Specific HTTP Requests
给定一个 API 有两个端点:
submit
result
假设需要 20 submits
之后 API 服务器开始计算特定用户的结果
鉴于这样的计算需要 1 到 5 秒才能完成
鉴于目前我的 JMeter
脚本能够成功提交所有这些内容,并且它不断查询 result endpoint
直到收到结果
考虑到我目前面临的恼人问题是,由于 result endpoint
是一个非常 light/quick 的请求(在结果尚未计算的情况下),更多请求最终到达 result endpoint
而不是提交端点。
并且考虑到这种行为会扭曲整体吞吐量的测量。
假设添加 Constant Timer
会阻塞整个请求线程,并且在计时器完成之前不会发出其他请求
那么我的问题是: JMeter
是否以一种或另一种方式提供以下能力:
- 确定请求的优先级(因此
results endpoint
的优先级较低)或
- 在异步基础上对 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/。
或者自己编写结合这些方法中的任何一种的东西。
给定一个 API 有两个端点:
submit
result
假设需要 20 submits
之后 API 服务器开始计算特定用户的结果
鉴于这样的计算需要 1 到 5 秒才能完成
鉴于目前我的 JMeter
脚本能够成功提交所有这些内容,并且它不断查询 result endpoint
直到收到结果
考虑到我目前面临的恼人问题是,由于 result endpoint
是一个非常 light/quick 的请求(在结果尚未计算的情况下),更多请求最终到达 result endpoint
而不是提交端点。
并且考虑到这种行为会扭曲整体吞吐量的测量。
假设添加 Constant Timer
会阻塞整个请求线程,并且在计时器完成之前不会发出其他请求
那么我的问题是: JMeter
是否以一种或另一种方式提供以下能力:
- 确定请求的优先级(因此
results endpoint
的优先级较低)或 - 在异步基础上对 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/。 或者自己编写结合这些方法中的任何一种的东西。