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 C5AD17C747E3415A3642D57D77C6C491D6AC1D69
echo "deb https://dl.k6.io/deb stable main" | sudo tee /etc/apt/sources.list.d/k6.list
sudo apt-get update && sudo apt-get install k6
Linux (RHEL/CentOS/Fedora) YUM 仓库 sudo dnf install https://dl.k6.io/rpm/repo.rpm
sudo 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 环境搭建与运行流程总览

下图展示了从安装到输出指标报告的完整流程:

k6 环境搭建与基础运行流程 1. 安装 k6 2. 验证安装 3. 编写脚本 4. k6 run 执行 5. 实时指标输出 6. 最终报告 每个步骤都对应一个可验证的输出,确保环境正确后再进入下一阶段

2.6 常见问题与排查

  • 安装失败: 检查网络连接,尝试使用 Docker 版本绕过系统包管理器问题。
  • k6 命令找不到: 确认安装路径已加入系统 PATH 环境变量,重启终端或重新登录。
  • 脚本执行报错: 检查 JavaScript 语法,确保 import 路径正确,目标 URL 可访问。
  • 指标数据异常: 确认目标服务没有限流或防火墙拦截,尝试使用 https://test.k6.io 官方测试站点。
🔧 进阶建议: 安装完成后,运行 k6 run --vus 10 --duration 30s first-test.js 模拟 10 个并发用户持续 30 秒,观察指标变化,初步体验负载生成效果。