2. k6 环境搭建与基础运行
在开始编写容量压测脚本之前,必须正确安装 k6 运行时环境。本章将指导你在主流操作系统上完成安装,并编写第一个可运行的 k6 脚本,理解其核心输出指标。
2.1 各操作系统安装方式
k6 官方提供跨平台安装包,推荐使用包管理器进行安装,便于后续版本升级。
| 操作系统 | 推荐安装方式 | 安装命令 |
|---|---|---|
| macOS | Homebrew | brew install k6 |
| Windows | winget / 官方 MSI | winget install k6 或下载 .msi 安装包 |
| Ubuntu/Debian | APT 仓库 | sudo apt install k6(需先添加官方 GPG 密钥) |
| CentOS/RHEL | YUM 仓库 | sudo yum install k6 |
| Docker | 容器运行 | docker pull grafana/k6 |
💡 验证安装: 在终端执行
k6 version,若输出类似 k6 v0.54.0 的版本号,则安装成功。
2.2 编写第一个 k6 脚本
k6 脚本使用 JavaScript(ES6+)编写,核心结构包含 默认导出函数 和 选项配置。以下是最简可运行脚本:
import http from 'k6/http';
import { sleep } from 'k6';
export const options = {
vus: 1, // 虚拟用户数
duration: '10s', // 运行时长
};
export default function () {
// 发送 HTTP GET 请求
const res = http.get('https://test.k6.io');
// 输出响应状态码
console.log(`Status: ${res.status}`);
// 思考时间,模拟用户操作间隔
sleep(1);
}
📌 脚本要点:
import引入 k6 内置模块:k6/http处理 HTTP 请求,k6提供sleep等工具函数。export const options定义压测参数,vus控制并发数,duration控制运行时长。export default function是每个虚拟用户循环执行的入口函数。
2.3 运行脚本与理解输出
将上述代码保存为 first-test.js,在终端执行:
k6 run first-test.js
运行结束后,k6 会输出完整的性能报告。以下是关键输出字段及其含义:
| 输出指标 | 含义 | 关注点 |
|---|---|---|
| http_req_duration | 请求总耗时(含 DNS、TCP、TLS、响应时间) | 平均值 > 2000ms 需排查 |
| http_req_failed | 请求失败率(4xx/5xx 或网络错误) | 应接近 0% |
| vus | 当前活跃虚拟用户数 | 是否达到配置值 |
| iterations | 总迭代次数(每个 VU 执行一次 default 函数计为 1) | 反映吞吐量 |
| data_received / data_sent | 网络流量统计 | 带宽是否成为瓶颈 |
⚠️ 常见问题: 若输出中
http_req_failed 不为 0,请检查目标 URL 是否可达、网络代理设置是否正确。k6 默认不跟随重定向,如需跟随需在 params 中设置 redirects: 5。
2.4 k6 脚本执行流程
下图展示了 k6 从加载脚本到输出报告的完整执行链路:
2.5 常用运行参数
除脚本内定义 options 外,k6 支持命令行覆盖参数,便于快速调整压测规模:
# 覆盖 VU 数和时长
k6 run --vus 10 --duration 30s first-test.js
# 输出详细 JSON 报告
k6 run --summary-export=result.json first-test.js
# 静默模式(仅输出最终摘要)
k6 run --quiet first-test.js
🔧 调试技巧: 在脚本中使用
console.log() 输出调试信息,k6 默认会打印到终端。正式压测前建议先用 --vus 1 --duration 5s 验证脚本正确性。
2.6 环境验证清单
完成本章学习后,请按以下步骤确认环境就绪:
- 安装验证: 终端执行
k6 version,确认版本号 ≥ 0.50.0。 - 脚本运行: 执行
k6 run first-test.js,观察终端输出无报错。 - 指标理解: 查看输出报告中的
http_req_duration平均值和http_req_failed比例。 - 参数覆盖: 使用
--vus 3 --duration 15s运行,确认 VU 数变化。