【问题标题】:Understand how k6 manages at low level a large number of API call in a short period of time了解 k6 如何在短时间内在底层管理大量 API 调用
【发布时间】:2021-12-17 06:27:08
【问题描述】:

我是 k6 的新手,如果我问的问题很幼稚,我很抱歉。我试图了解该工具如何在后台管理网络调用。它是否以他能做到的最大速度执行它们?是否根据被测系统的响应时间对它们进行排队?

我需要得到它,因为我正在使用 k6 runk6 cloud 运行大量测试,但我每秒发出的请求不能超过 ~2000 个(查看 k6 结果)。我想知道是否是 k6 实现了某种背压机制,如果它知道我的系统“慢”,或者是否有其他原因导致我无法克服该限制。

我读到here 每秒可以发出 300.000 个请求,并且已经为此配置了云环境。我也尝试手动配置我的机器,但没有任何改变。

例如以下测试是相同的,唯一的变化是 VU 的数量。我在k6 cloud 上运行所有测试。

共享参数:

60 api calls (I have a single http.batch with 60 api calls)
Iterations: 100
Executor: per-vu-iterations

这里我得到了 547 个请求/秒:

VUs: 10 (60.000 calls with an avg response time of 108ms)

这里我得到了 1.051,67 reqs/s:

VUs: 20 (120.000 calls with an avg response time of 112 ms)

我得到了 1.794,33 个请求/秒:

VUs: 40 (240.000 calls with an avg response time of 134 ms)

这里我得到了 2.060,33 ​reqs/s:

VUs: 80 (480.000 calls with an avg response time of 238 ms)

这里我得到了 2.223,33 ​reqs/s:

VUs: 160 (960.000 calls with an avg response time of 479 ms)

这里我得到了 2.102,83 peak reqs/s:

VUs: 200 (1.081.380 calls with an avg response time of 637 ms) // I reach the max duration here, that's why he stop

我所期待的是,如果我的系统无法处理这么多请求,我必须看到很多超时错误,但我没有看到任何错误。我看到的是所有 API 调用都被执行并且没有返回错误。谁能帮帮我?

【问题讨论】:

    标签: load-testing k6


    【解决方案1】:

    作为 k6——或者更具体地说,您的 VU——同步执行代码,您可以实现的吞吐量完全取决于您与之交互的系统的响应速度。

    我们以这个脚本为例:

    import http from 'k6/http';
    
    export default function() {
      http.get("https://httpbin.org/delay/1");
    }
    

    这里的端点被有意设计为需要 1 秒来响应。导出的默认函数中没有其他代码。因为每个 VU 会在通过 http.get 语句之前等待响应(或超时),所以每个 VU 的最大吞吐量将是非常可预测的 1 个 HTTP 请求/秒。

    通常,响应时间(和/或错误,如超时)会随着 VU 数量的增加而增加。您最终会达到添加 VU 不会导致更高吞吐量的地步。在这种情况下,您基本上已经确定了被测系统可以处理的最大吞吐量。它根本跟不上。

    不是的唯一情况是系统运行 k6 耗尽硬件资源(通常是 CPU 时间)。这是您必须始终注意的事情。

    如果您使用的是 k6 OSS,您可以扩展到系统可以处理的尽可能多的 VU(并发线程)。您还可以使用http.batch 在每个 VU同时触发多个请求(在收到所有响应之前,该语句仍将阻塞)。这可能比增加额外 VU 的开销要少一些。

    【讨论】:

      猜你喜欢
      • 2015-11-26
      • 2014-10-17
      • 2014-12-20
      • 2012-03-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-12
      • 2023-04-03
      相关资源
      最近更新 更多