朋友们,你们好!
在这篇博客中,我们将用Grafana k6研究负载测试工具中各种类型的API的度量。然而,你可能会问,这些情况是什么,为什么我们要使用它们。因此,让我们从一些核心指标的基本原理开始。
它跟踪一个系统在真实世界场景中的工作情况。
我希望你在读完定义后对度量有一个基本的了解。我们将在这篇博客中学习更多的知识。但在此之前,让我们逐一记住更多关于K6的关键点。
什么是Grafana k6?
k6,以前被称为负载影响,是一个开源的负载测试工具,可以用来评估API、微服务和网页的性能。你可以使用k6来评估你的系统的可靠性和性能,更早地捕捉到性能退步和问题。为了使性能测试更有效率,我们可以利用度量,复制和显示度量所追踪的内容,以及系统在真实世界场景中的工作情况。
K6中度量的目的是什么,我们为什么需要它们?
这几乎是每个人都有的基本问题,比如我们为什么需要和利用它们,因此,让我们用一句话来定义它" 使用这些矩阵来分析、比较,并在你的测试结果数据中寻找有意义的相关性"。
那么,让我们仔细看看,K6默认会自动收集内置指标。除了内置的指标外,你还可以创建新的指标。
指标的分类
从广义上讲,我们有两种类型的度量。
1.内置指标
当你运行最简单可行的k6测试时,内置指标会输出到stdout。
import http from 'k6/http';
import check from 'k6';
export default function ()
let res = http.get ('https://knoldus.keka.com');
console.log (res.status)
check (res,
'is status 200': (r) => r.status === 200,
);
}

正如你可能已经看到的那样,下面的表格描述了我报告的内置指标,以HTTP、迭代或vu开头的指标在该输出中被内置:
| 指标名称 | 类型 | 描述 |
| vus | 衡量标准 | 当前活跃的虚拟用户的数量 |
| 检查 | 速率 | 成功检查的次数 |
| vus_max | 衡量标准 | 测试中可能的最大数量的VU(用于 VU的资源被提前分配,以确保当负载水平增加时,性能不会 。) |
| 迭代次数 | 计数器 | 迭代计数器。VU在测试中执行 脚本的次数(默认函数)。 |
| http_reqs | 趋势 | k6总共产生了多少个HTTP请求。 |
| data_sent | 计数器 | 发送的数据量 |
| 收到的数据 | 计数器 | 收到的数据量 |
| http_req_waiting | 趋势 | 等待远程主机响应的时间 ("time to first byte", or "TTFB"). float |
| http_req_blocked | 趋势 | 在启动请求之前,花费在阻塞(等待空闲的TCP连接 )上的时间。 |
| 迭代时间 | 趋势 | 对 函数进行一次完整迭代所需的时间。 |
| http_req_receiving | 趋势 | 从远程 主机接收响应数据所需的时间。 float |
| http_req_connecting | 趋势 | 与远程 主机建立TCP连接所需的时间。 |
| http_req_tls_handshaking | 趋势 | 与远程主机协商TLS会话所花费的时间 |
2.自定义指标
你也可以创建你自己的指标,这些指标将在负载测试结束时显示。
在下面的例子中,将创建一个叫做 "等待时间 "的趋势型指标,myTrend变量将被用来在代码中引用它。
import http from 'k6/http';
import { Trend } from 'k6/metrics';
import { check } from 'k6';
const myTrend = new Trend('waiting_time');
export default function () {
let res = http.get('https://knoldus.keka.com');
console.log(res.status)
check(res, {
'is status 200': (r) => r.status === 200,
});
myTrend.add(res.timings.waiting);
console.log(myTrend.name); // waiting_time
}console.log

这篇博客就写到这里。我希望你喜欢并了解了K6中的度量。我们还有本博客的另一部分,请继续关注。如果你需要上述代码,请随时与我们联系:knoldus techub.com。
谢谢你!!