【问题标题】:JMeter Asynchronous Delay In Specific HTTP Requests特定 HTTP 请求中的 JMeter 异步延迟
【发布时间】:2017-03-02 00:03:09
【问题描述】:

给定一个具有两个端点的 API:

  1. submit
  2. result

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

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

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

鉴于我目前面临的烦人问题是,由于result endpoint 是一个非常轻量/快速的请求(如果尚未计算结果),更多的请求最终会发送到result endpoint 而不是提交端点。

鉴于这种行为会扭曲对整体吞吐量的测量。

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

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

  1. 优先处理请求(这样results endpoint 的优先级会更低)或者是
  2. 在异步的基础上对 HTTP 请求引入延迟,以使 result endpoint 请求最终不会占据我的 API 的所有注意力?

【问题讨论】:

  • 您能在此处显示您的计划快照吗?这会有所帮助

标签: asynchronous jmeter stress-testing


【解决方案1】:

鉴于添加一个常量计时器会阻止整个请求 线程,并且在计时器完成之前不会发出其他请求

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

如果是,那么划分它:为你的“结果”请求建立一个单独的线程组,并在那里设置你想要的时间。

虽然如果你先展示你的计划会很棒。

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

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

【讨论】:

  • @yuri_g 你说得对,我只为我的所有端点使用一个线程组。我的结果端点需要从提交端点收到的响应提供的一些特定 ID。我只需要想办法将这样的值从一个线程组传递到另一个线程组。
猜你喜欢
  • 2017-10-29
  • 1970-01-01
  • 1970-01-01
  • 2017-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多