1

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

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

1) 客户端;

2)服务器端;

3)客户端-服务器的交互?

您应该阅读哪些关于 VU 精髓的精妙之处,尤其是在 k6 中?现在我发现每个 VU 在客户端和服务器端占用一个网络端口。

负载配置文件:

1) rps:1;vus:1; N 分钟的持续时间——我在 Grafana 中看到请求数量的增加非常少:+~1rps。一切都很好;

2) rps:1;vus:1..1000 在 N 分钟内通过选项加速target-stages我看到负载峰值增加了 ~+100rps,尽管根据k6 文档的选项“rps”是“每秒发出的最大请求数, 在所有 VU 中总计”选项,即我希望看到负载在 ~1rps 中,而不是 ~+100rps,类似于经验 #1 — 即 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); 
};

格拉法纳 在此处输入图像描述

4

1 回答 1

1

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

如果你正在测试一个 web 服务器,你可以认为VU是和真实用户一样。

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

您可以在此链接中阅读有关 VU 定义的更多详细信息。

于 2019-11-11T08:30:25.657 回答