一、什么是k6
简介
k6 是一个免费、开源、高性能的负载测试工具,能有效提高性能测试的生产力。它总结了LoadImpact在负载和性能测试行业的多年经验,提供了简洁、方便的脚本API,支持本地和云端执行,可进行灵活的配置。
二、安装
Mac 系统安装
Mac 系统可以通过 Homebrew 安装 k6:
brew install k6
Windows 系统安装
Windows 系统可以通过 Chocolatey 安装 k6:
choco install k6
或者通过 winget 安装 k6:
winget install k6
Docker 安装
k6 也可以通过 Docker 安装:
docker pull grafana/k6
运行
新建一个.js 文件, test.js
import http from 'k6/http';
import { check } from 'k6';
export let options = {
vus: 100, // 并发虚拟用户数量
duration: '1m', // 测试持续时间
};
export default function () {
let res = http.get('http://www.***.com'); // 替换为你的实际URL
check(res, {
'status is 200': (r) => r.status === 200,
});
}
运行 k6 run test.js
名称 类型 作用
data_received Counter 接收的数据量
data_snet Counter 发送的数据量
http_req_blocked Trend 在启动请求之前,被阻止(等待空闲的 TCP 连接槽位)所花费的时间
http_req_connecting Trend 建立与远程主机的 TCP 连接所花费的时间
http_req_duration Trend 请求的总时间。它等于http_req_sending + http_req_waiting + http_req_receiving(即,在没有初始 DNS 查找/连接时间的情况下,远程服务器处理请求和响应所需的时间)
http_req_failed Rate 根据setResponseCallback
http_req_receiving Trend 从远程主机接收响应数据所花费的时间
http_req_sending Trend 将数据发送到远程主机所花费的时间
http_req_tls_handshaking Trend 与远程主机握手 TLS 会话所花费的时间
http_req_waiting Trend 等待来自远程主机的响应所花费的时间(也称为“第一个字节的时间”或“TTFB”)
http_reqs Counter k6 生成的 HTTP 请求总数
iteration_duration Trend 完成一次完整迭代所花费的时间,包括花费的时间设置和拆卸.要计算特定场景的迭代函数的持续时间
iterations Counter VU 执行 JS 脚本的聚合次数(违约函数)
vus Gauge 当前活动虚拟用户数
vus_max Gauge 最大可能数量的虚拟用户(VU 资源是预先分配的,确保在纵向扩展负载级别时不会影响性能)