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 从加载脚本到输出报告的完整执行链路:

k6 脚本执行流程 加载脚本 解析 options 初始化 VU 执行迭代 收集指标 输出报告 说明 每个 VU 独立执行 default 函数 迭代间自动 sleep

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 环境验证清单

完成本章学习后,请按以下步骤确认环境就绪:

  1. 安装验证: 终端执行 k6 version,确认版本号 ≥ 0.50.0。
  2. 脚本运行: 执行 k6 run first-test.js,观察终端输出无报错。
  3. 指标理解: 查看输出报告中的 http_req_duration 平均值和 http_req_failed 比例。
  4. 参数覆盖: 使用 --vus 3 --duration 15s 运行,确认 VU 数变化。