k6:如何在增加VU数量的每个阶段管理rps-limit

时间:2019-11-10 10:41:40

标签: load-testing k6

我有一个关于基本术语的问题,没有找到详细的解释。输入数据:框架k6 v0.25.1,http-请求。

问题#1 :从角度来看,VU(虚拟用户)的实现是什么:

1)客户端;

2)服务器端;

3)客户端与服务器之间的交互?

您应该了解VU本质的微妙之处,尤其是在k6中? 现在,我发现每个VU在客户端和服务器端都占用一个网络端口。

加载配置文件:

1)rps:1; vus:1; N分钟的持续时间—在Grafana中,我发现请求数量的增加确实很小:+〜1rps。一切都很好;

2)rps:1; vus:通过target中的选项stages在N分钟内加速了1..1000 —我看到负载的峰值增加了〜+ 100rps,尽管根据{{3 }}是“所有VU总共每秒发出的最大请求数”选项,即与经验#1类似,而不是我期望的〜1rps负载~~ 100rps —即rps限制不正确的k6错误未在所有VU线程中都占用rps数量,或者每个VU存在所需的VU隐藏的合法行为。

注意:我在方案开始和结束时设置了一个任意超时,以实现均匀的负载分配。

问题2 :当增加vus时,非法超过rps限制的rps惊人增长的原因可能是什么?

示例:

import http from "k6/http";

export let options = {
    stages: [
        { duration: "1m", target: 1, rps: 1 },
        { duration: "1m", target: 200, rps: 1 },
        { duration: "1m", target: 500, rps: 1 },
        { duration: "1m", target: 1000, rps: 1 },
        { duration: "1m", target: 500, rps: 1 },
        { duration: "1m", target: 200, rps: 1 },
        { duration: "1m", target: 1, rps: 1 },
    ]
};

export default function() {
  http.get("https://httpbin.test.loadimpact.com/get"); 
  console.log("request made by VU " + __VU); 
};

k6 documentation grafana

1 个答案:

答案 0 :(得分:1)

Virtual UserVUk6的特定定义和实现。 VU是执行脚本,向服务器发出一个或多个HTTP请求的实体。

如果您正在测试Web服务器,则可以认为VU与真实用户相同。

如果您正在测试API,则VU每秒向服务器发出的请求(RPS)会比实际VUs多。例如,您可以定义5个VU,但是每个VU每秒可以产生10个请求。这就是为什么当您的VU增加时,您可以很快达到RPS限制。

您可以在此link上了解有关VU定义的更多详细信息。