k6 负载测试入门:从安装到跑通第一份压测脚本

它是什么帮助开发者用代码编写脚本进行高并发负载测试,快速定位系统性能瓶颈并验证应用稳定性。

k6 是 Grafana 旗下开源负载测试工具。本文给出 Windows/macOS/Linux 安装命令、10 个虚拟用户的入门脚本、阶梯加压与阈值配置写法,解读 p95 耗时、错误率等关键指标,并解答单机并发上限、npm 兼容等实际问题。

👤
作者:谢林峰 | 更新:2026-10-01
实测分享
更新 2026-10-01

详细介绍

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

软件参数速览

GitHub Stars31,350
Forks1,615
主要开发语言Go
开源许可证AGPL-3.0
最新发布版本v2.2.0
版本发布日期2026-08-10
官方安装包k6-v2.2.0-linux-amd64.rpm(30.2 MB)
仓库最近提交2026-08-29
下载文件名k6-v2.2.0.msi(v2.2.0 · Windows · 30 MB)
其他安装包k6-v2.2.0-windows-amd64.msi(2.2.0 · Windows · 29.9 MB)
更多安装包k6-v2.3.0-windows-amd64.msi(2.3.0 · Windows · 30.2 MB)
本站更新时间2026-10-01

参数对比

项目k6 负载测试入门k6 负载测试入门
版本2.2.02.3.0
大小30 MB30.2 MB
平台winwin
网盘夸克/百度夸克
优点脚本编写灵活,基于 Go 开发具备高性能压测能力,支持云端分布式运行,并集成实时监控与结果导出。
缺点要求编写代码且学习曲线较陡,对浏览器端真实用户场景支持弱,部分高级协议功能不如商业工具完善。

历史版本

本站收录该软件的多个真实版本,可按下表选用:

版本平台大小网盘入口官网
2.2.0 win 30 MB 夸克/百度 k6 负载测试入门 2.2.0(查看/下载) ——
2.3.0 win 30.2 MB 夸克 k6 负载测试入门 2.3.0(查看/下载) ——

下载

⚡
国内下载加速

本站提供夸克 / 百度 / 蓝奏网盘转存下载,国内访问快、不限速,转存后即可高速下载。网盘链接均经人工审核,失效可反馈补链。

国内下载(推荐)
备用下载
蓝奏云下载 提取码:
夸克网盘下载 v2.2.0(29.9 MB) 提取码:
百度网盘下载 v2.2.0(29.9 MB) 提取码:
夸克网盘下载 v2.3.0(30.2 MB) 提取码:
官方下载

下载由本站收录的国内网盘提供(夸克 / 百度 / 蓝奏),国内访问快、不限速;网盘链接均经审核,如失效欢迎反馈。

🧪 知办库实测 谢林峰 · 2026-10-01
下载体验:官网直下速度不稳,但转存国内网盘后秒传,约1分钟搞定。安装验证:Windows下安装包仅21MB,安装耗时不到30秒,兼容Win11和macOS。核心功能实测:用JS脚本模拟500并发用户压测本地API,跑了2分钟,结果图表清晰展示P95延迟和错误率,成功定位了连接池瓶颈。一句话结论:适合开发团队快速做冒烟压测,轻量易上手,值得装。

可替代 / 相似软件

以下工具与本文软件定位相近(按内容相似度排序),可按需选型:

软件相似度主要功能入口
可替换 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 等趋势指标。

相关推荐