k6 负载测试入门:从安装到跑通第一份压测脚本
它是什么帮助开发者用代码编写脚本进行高并发负载测试,快速定位系统性能瓶颈并验证应用稳定性。
k6 是 Grafana 旗下开源负载测试工具。本文给出 Windows/macOS/Linux 安装命令、10 个虚拟用户的入门脚本、阶梯加压与阈值配置写法,解读 p95 耗时、错误率等关键指标,并解答单机并发上限、npm 兼容等实际问题。
详细介绍
k6 是什么,适合什么场景
k6 是 Grafana 旗下的开源负载测试工具,用 JavaScript(ES6 模块)编写脚本,主打 API、微服务接口压测。脚本可直接进 Git 做版本管理,单条命令在终端运行,也能嵌入 GitHub Actions、Jenkins 做性能回归。本文命令均在 Windows 11 实测通过。
安装:三大系统的具体命令
- Windows:执行 winget install k6 --source winget,或 choco install k6;也可到 GitHub 的 grafana/k6 Releases 页下载 MSI 安装包。装完重开终端,输入 k6 version 确认版本。
- macOS:brew install k6
- Linux:Ubuntu/Debian 按官方文档添加 k6 apt 源后 sudo apt-get install k6;无网环境可用 Docker:docker run --rm -i grafana/k6 run - < script.js
第一份脚本:10 个虚拟用户压 30 秒
新建 test.js:
import http from 'k6/http';
import { check, sleep } from 'k6';
export const options = { vus: 10, duration: '30s' };
export default function () {
const res = http.get('https://test.k6.io/');
check(res, { '状态码为 200': (r) => r.status === 200 });
sleep(1);
}执行 k6 run test.js,结束后重点看三行输出:http_req_duration 的 p(95)(95% 请求的耗时上限)、http_req_failed(请求失败率)、checks(断言通过率)。压测自己的服务时把 URL 换成内网地址即可,切勿对生产环境直接施压。
阶梯加压与阈值:模拟真实流量并自动判定
固定并发不符合真实流量曲线,用 stages 定义「爬坡—保持—回落」,并用 thresholds 设定达标线:
export const options = {
stages: [
{ duration: '1m', target: 50 },
{ duration: '3m', target: 50 },
{ duration: '1m', target: 0 },
],
thresholds: {
http_req_failed: ['rate<0.01'],
http_req_duration: ['p(95)<500'],
},
};含义是:错误率超过 1%,或 p95 耗时超过 500ms,k6 以非零退出码结束,CI 流水线随即失败——这是把性能回归卡进发布流程的关键开关。
压测前必知的三件事
- 单机上限:普通电脑约能稳定模拟数千 VU,继续加压会先打满压测机自身 CPU 和网络,测出的是压测机的瓶颈;更高并发需 k6 Cloud 或多机分片。
- 运行时差异:k6 内嵌的是 Go 实现的 JS 运行时,不是 Node,无法直接 require npm 包;纯 JS 库可先用 esbuild 打包成单文件再 import。
- 需登录的接口:在 setup() 中获取 token,返回值自动传入 default 函数塞进请求头;多账号数据用 SharedArray 加载,避免每个 VU 复制一份。
更新记录
最近更新:2026-10-01
软件参数速览
参数对比
| 项目 | k6 负载测试入门 | k6 负载测试入门 |
|---|---|---|
| 版本 | 2.2.0 | 2.3.0 |
| 大小 | 30 MB | 30.2 MB |
| 平台 | win | win |
| 网盘 | 夸克/百度 | 夸克 |
| 优点 | 脚本编写灵活,基于 Go 开发具备高性能压测能力,支持云端分布式运行,并集成实时监控与结果导出。 | |
| 缺点 | 要求编写代码且学习曲线较陡,对浏览器端真实用户场景支持弱,部分高级协议功能不如商业工具完善。 | |
历史版本
本站收录该软件的多个真实版本,可按下表选用:
| 版本 | 平台 | 大小 | 网盘 | 入口 | 官网 |
|---|---|---|---|---|---|
| 2.2.0 | win | 30 MB | 夸克/百度 | k6 负载测试入门 2.2.0(查看/下载) | —— |
| 2.3.0 | win | 30.2 MB | 夸克 | k6 负载测试入门 2.3.0(查看/下载) | —— |
下载
下载由本站收录的国内网盘提供(夸克 / 百度 / 蓝奏),国内访问快、不限速;网盘链接均经审核,如失效欢迎反馈。
可替代 / 相似软件
以下工具与本文软件定位相近(按内容相似度排序),可按需选型:
| 软件 | 相似度 | 主要功能 | 入口 |
|---|---|---|---|
| 可替换 JMeter 或 LoadRunner | 相关 | — | 官网评估 |
怎么选(决策参考)
可替换 JMeter 或 LoadRunner 等传统重量级工具,尤其适合 API 和微服务压测场景。
适合熟悉 JavaScript 的开发者、DevOps 团队,以及希望将性能测试集成到 CI/CD 流程中的组织。
不适合无编程经验的测试人员,也不适合需要复杂 GUI 录制或浏览器端交互模拟的性能测试场景。
脚本编写灵活,基于 Go 开发具备高性能压测能力,支持云端分布式运行,并集成实时监控与结果导出。
要求编写代码且学习曲线较陡,对浏览器端真实用户场景支持弱,部分高级协议功能不如商业工具完善。
GitHub 23k+ stars,fork 1.1k,贡献者 200+,每月多次发版,社区活跃且被 CNCF 收录。
成熟
当你的测试团队具备编程能力,需要做 API 级负载测试并希望与开发流程无缝集成时,k6 是理想选择。
当你需要图形化录制脚本、缺少编程资源,或必须模拟复杂浏览器交互操作时,应选择更传统的工具。
常见问题
k6 完全免费吗?和 k6 Cloud 是什么关系?
开源版 k6(grafana/k6 仓库)免费,本地压测无并发限制;k6 Cloud 是 Grafana 托管的云压测服务,负责大规模分布式发压和结果存储,有免费试用额度,不购买不影响本地版使用。
Windows 装完 k6 后提示「不是内部或外部命令」怎么办?
多数情况是环境变量未刷新,关闭终端重新打开即可;如果用 MSI 装到了自定义目录,需手动把该目录加入系统 PATH 再重试。
k6 和 JMeter 应该选哪个?
接口/微服务压测、脚本需要进代码仓库和 CI 的团队选 k6,代码可复用、评审友好;需要图形界面操作、或要覆盖 JDBC、SMTP 等更多协议的场景,JMeter 更合适。
k6 单机最多能模拟多少并发?
普通电脑数千 VU 是安全范围,实际取决于响应体大小和带宽。加压前先观察压测机自身 CPU 占用,超过 80% 时数据已失真,应降低 VU 或改用分布式方案。
k6 脚本能直接使用 axios、lodash 这类 npm 包吗?
不能直接使用。k6 运行时不是 Node,含 Node 内置 API 的包无法运行;纯 JS 实现的库可经 esbuild/webpack 打包为单文件后 import,HTTP 请求等能力应使用 k6 内置模块。
想让测试结果额外输出 p99 耗时,怎么配置?
在 options 中加入 summaryTrendStats: ['avg', 'p(90)', 'p(99)'],终端摘要就会按指定统计项展示 http_req_duration 等趋势指标。