使用 K6(负载影响)对 API 进行负载测试时的限制

Posted

技术标签:

【中文标题】使用 K6(负载影响)对 API 进行负载测试时的限制【英文标题】:Limitation when using K6 (Load impact) for load testing on APIs 【发布时间】:2018-11-06 18:51:47 【问题描述】:

我通过负载影响使用 k6(OSS) 进行了一些测试,发现与 JMeter 相比,它在可用性方面非常出色

我正在做一项可行性研究,以选择一种可以帮助我进行 API 测试的负载测试工具。我倾向于使用 K6,因为我相信它对开发人员友好,但找不到关于我可以使用 K6 模拟的最大负载的建议资源。

是否可以使用 K6 模拟 100 万 rps(每秒请求数)?如果是,我应该如何实现这一目标?

【问题讨论】:

【参考方案1】:

理论上,是的,如果您使用多个 k6 实例,您每秒可以实现任意数量的请求。单个 k6 实例每秒可以产生数千到数万个请求,具体取决于许多不同的因素 - 机器规格、脚本复杂性、VU、睡眠时间、网络条件等。

不过,目前 k6 还没有原生分布式执行模式,因此您必须自己安排不同的实例。有一个 REST API (https://docs.k6.io/docs/rest-api),您可以将指标输出到像 InfluxDB (https://docs.k6.io/docs/results-output) 这样的集中式收集器,但是在多台机器上执行单个测试需要一些工作。计划推出原生 k6 分布式执行模式,但尚未开始工作。

【讨论】:

【参考方案2】:

您可以在负载影响 (https://loadimpact.com) 云(云执行模式)上运行 k6,以访问并行执行的多个 k6 实例。然后,如前所述,您可以每秒生成大量请求,具体 RPS 高度依赖于您的脚本和其他因素。

【讨论】:

以上是关于使用 K6(负载影响)对 API 进行负载测试时的限制的主要内容,如果未能解决你的问题,请参考以下文章

使用 k6 进行 Meteor 应用程序负载测试,等待 body 元素

K6 负载测试 - 如何为整个测试运行创建顺序 ID

使用 K6 来给你的服务做一次负载和压力测试吧

开源负载测试工具k6比JMeter更容易的5件事

开源负载测试工具k6比JMeter更容易的5件事

如何对API进行负载测试与调优(一)