2. k6 环境搭建与基础运行
本章将指导你在主流操作系统上完成 k6 的安装、环境验证,并运行第一个 HTTP 请求脚本。掌握这些基础操作是后续进行事件触发、容量压测与巡检编排的前提。
2.1 安装 k6(Windows / macOS / Linux)
k6 提供多种安装方式,推荐使用官方包管理器或直接下载二进制文件。以下为各系统最简洁的安装命令:
| 操作系统 | 安装方式 | 命令 / 步骤 |
|---|---|---|
| Windows | Chocolatey | choco install k6 |
| Windows | Winget | winget install k6 |
| macOS | Homebrew | brew install k6 |
| Linux (Debian/Ubuntu) | APT 仓库 | sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys C5AD17C747E3415A3642D57D77C6C491D6AC1D69echo "deb https://dl.k6.io/deb stable main" | sudo tee /etc/apt/sources.list.d/k6.listsudo apt-get update && sudo apt-get install k6 |
| Linux (RHEL/CentOS/Fedora) | YUM 仓库 | sudo dnf install https://dl.k6.io/rpm/repo.rpmsudo dnf install k6 |
| 通用 (所有平台) | Docker | docker pull grafana/k6 |
💡 提示: 如果你在 Windows 上使用 WSL2(Windows Subsystem for Linux),建议在 WSL2 的 Linux 发行版内安装 k6,性能更接近原生 Linux 环境,且与后续 CI/CD 流水线行为一致。
2.2 验证安装
安装完成后,打开终端(Windows 使用 CMD 或 PowerShell),执行以下命令验证 k6 是否可用:
k6 version
正常输出示例:
k6 v0.54.0 (2024-09-30T10:23:12+0000/...)
如果看到版本号,说明安装成功。若提示“命令未找到”,请检查环境变量或重新安装。
进一步验证 k6 能否正常执行脚本:
k6 run --help
该命令会输出 k6 run 子命令的详细参数说明,表明运行时环境已就绪。
2.3 运行第一个 k6 脚本(http.get)
创建一个名为 first-test.js 的文件,内容如下:
import http from 'k6/http';
import { sleep } from 'k6';
export default function () {
http.get('https://test.k6.io');
sleep(1);
}
在终端中执行:
k6 run first-test.js
你将看到 k6 启动虚拟用户(VU),向 https://test.k6.io 发送 HTTP GET 请求,并输出实时指标。
📌 脚本解析:
import http from 'k6/http'— 导入 k6 的 HTTP 模块,用于发送网络请求。import { sleep } from 'k6'— 导入 sleep 函数,用于在请求之间模拟用户思考时间。export default function ()— 定义默认导出函数,k6 会为每个虚拟用户反复执行该函数。http.get('https://test.k6.io')— 发送 GET 请求,返回响应对象。sleep(1)— 暂停 1 秒,模拟真实用户的操作间隔。
2.4 理解 k6 输出指标
k6 运行结束后,会在终端输出一份详细的指标报告。以下为关键指标及其含义:
| 指标名称 | 类型 | 说明 |
|---|---|---|
| http_req_duration | 趋势 | 请求总耗时(从发送到接收完整响应),包含 DNS 解析、TCP 连接、TLS 握手、发送、等待和接收时间。 |
| http_req_failed | 比率 | 请求失败率(HTTP 状态码 >= 400 或网络错误)。 |
| http_reqs | 计数器 | 总请求数,反映吞吐量。 |
| vus | 计量器 | 当前活跃的虚拟用户数。 |
| vus_max | 计量器 | 最大虚拟用户数(由选项配置)。 |
| iteration_duration | 趋势 | 单次迭代(执行一次 default 函数)的总耗时。 |
| iterations | 计数器 | 总迭代次数。 |
| data_received | 计数器 | 接收到的数据量(字节)。 |
| data_sent | 计数器 | 发送的数据量(字节)。 |
输出报告示例片段:
data_received..................: 82 kB 27 kB/s
data_sent......................: 4.2 kB 1.4 kB/s
http_req_blocked...............: avg=10.23ms min=0s med=0s max=102.3ms
http_req_connecting............: avg=5.12ms min=0s med=0s max=51.2ms
http_req_duration..............: avg=112.45ms min=98.1ms med=110.2ms max=145.6ms
http_req_failed................: 0.00% ✓ 0 ✗ 10
http_req_receiving.............: avg=0.5ms min=0.1ms med=0.4ms max=1.2ms
http_req_sending...............: avg=0.2ms min=0.1ms med=0.2ms max=0.3ms
http_req_tls_handshaking.......: avg=5.01ms min=0s med=0s max=50.1ms
http_req_waiting...............: avg=106.7ms min=93.2ms med=104.5ms max=139.8ms
http_reqs......................: 10 3.33/s
iteration_duration.............: avg=1.11s min=1.09s med=1.11s max=1.14s
iterations.....................: 10 3.33/s
vus............................: 1 min=1 max=1
vus_max........................: 1 min=1 max=1
⚠️ 注意: 默认情况下 k6 只运行 1 个虚拟用户、1 次迭代。要模拟真实负载,必须通过
--vus 和 --duration 参数或脚本中的 options 对象配置并发用户数和运行时长。
2.5 环境搭建与运行流程总览
下图展示了从安装到输出指标报告的完整流程:
2.6 常见问题与排查
- 安装失败: 检查网络连接,尝试使用 Docker 版本绕过系统包管理器问题。
- k6 命令找不到: 确认安装路径已加入系统 PATH 环境变量,重启终端或重新登录。
- 脚本执行报错: 检查 JavaScript 语法,确保
import路径正确,目标 URL 可访问。 - 指标数据异常: 确认目标服务没有限流或防火墙拦截,尝试使用
https://test.k6.io官方测试站点。
🔧 进阶建议: 安装完成后,运行
k6 run --vus 10 --duration 30s first-test.js 模拟 10 个并发用户持续 30 秒,观察指标变化,初步体验负载生成效果。