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

Asynchronous 特定HTTP请求中的JMeter异步延迟,asynchronous,jmeter,stress-testing,Asynchronous,Jmeter,Stress Testing,给定一个具有两个端点的API: 提交 结果 假设需要20个提交,然后API服务器开始计算特定用户的结果 考虑到这样的计算需要1到5秒才能完成 考虑到目前我的JMeter脚本能够成功地提交所有这些内容,并且它会不断地查询结果端点,直到收到结果为止 考虑到我目前面临的恼人问题是,由于结果端点是一个非常轻/快速的请求(如果结果尚未计算),更多的请求最终会进入结果端点,而不是提交端点 鉴于这种行为扭曲了总体吞吐量的测量 如果添加一个常量计时器会阻塞整个请求线程,并且在计时器完成之前不会发出其他请求 那么

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

  • 提交
  • 结果
  • 假设需要20个
    提交
    ,然后API服务器开始计算特定用户的结果

    考虑到这样的计算需要1到5秒才能完成

    考虑到目前我的
    JMeter
    脚本能够成功地提交所有这些内容,并且它会不断地查询
    结果端点
    ,直到收到结果为止

    考虑到我目前面临的恼人问题是,由于
    结果端点
    是一个非常轻/快速的请求(如果结果尚未计算),更多的请求最终会进入
    结果端点
    ,而不是提交端点

    鉴于这种行为扭曲了总体吞吐量的测量

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

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

  • 对请求进行优先级排序(因此
    results endpoint
    的优先级较低),或者
  • 在异步的基础上对HTTP请求引入延迟,以便
    结果端点
    请求不会占用API的所有注意力
  • 假设添加一个常量计时器会阻止整个请求 线程,并且在计时器完成之前不会发出任何其他请求

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

    如果是,则将其划分:为“结果”请求建立单独的线程组,并在其中设置所需的计时

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

    UPD:因此您需要在线程之间进行通信

    然后您可以使用JMeter属性(这似乎是最简单、最粗糙的方法)。 或者使用文件或其他存储(例如,memdb中的一些简单存储)作为共享资源。 或使用此:。 或者你自己把这些方法结合起来写

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

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

    如果是,则将其划分:为“结果”请求建立单独的线程组,并在其中设置所需的计时

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

    UPD:因此您需要在线程之间进行通信

    然后您可以使用JMeter属性(这似乎是最简单、最粗糙的方法)。 或者使用文件或其他存储(例如,memdb中的一些简单存储)作为共享资源。 或使用此:。
    或者自己结合这些方法写一些东西。

    你能在这里展示一下你的计划吗?那会有帮助的。你能在这里展示一下你的计划吗?那会help@yuri_g您是对的,我只为所有端点使用一个线程组。我的结果端点需要从提交端点收到的响应提供的特定id。我只需要找出一种方法,将这样的值从一个线程组传递到另一个线程组。@yuri_g您是对的,我的所有端点只使用一个线程组。我的结果端点需要从提交端点收到的响应提供的特定id。我只需要找出一种方法,将这些值从一个线程组传递到另一个线程组。