[ PROMPT_NODE_24934 ]
k6-load-testing
[ SKILL_DOCUMENTATION ]
# k6 负载测试
## 概述
k6 是一款现代化的、以开发者为中心的负载测试工具,可帮助你为 HTTP API、WebSocket 端点和浏览器场景编写并执行性能测试。本技能提供了关于编写真实负载测试、配置测试场景(冒烟测试、负载测试、压力测试、尖峰测试、浸泡测试)、分析结果以及集成到 CI/CD 流水线的全面指导。
当你需要验证系统性能、识别瓶颈、确保 SLA 合规性或在部署前捕获性能回归时,请使用此技能。
---
## 何时使用此技能
- 当你需要对 HTTP API、WebSocket 端点或浏览器场景进行负载测试时
- 当你在 CI/CD 中设置性能回归测试时
- 当你在不同负载条件下分析系统行为时
- 当你在代码变更之间比较性能时
- 当你需要验证 SLA 要求和性能预算时
---
## k6 基础
### 安装
bash
# macOS
brew install k6
# Windows
choco install k6
# Linux
sudo gpg -k
sudo gpg --no-default-keyring --keyring /usr/share/keyrings/k6-archive-keyring.gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys C5AD17C747E3415A3642D57D77C6C491D6AC1D69
echo "deb [signed-by=/usr/share/keyrings/k6-archive-keyring.gpg] 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
### 快速入门
javascript
// simple-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://httpbin.test.k6.io/get');
check(res, {
'status is 200': (r) => r.status === 200,
'response time r.timings.duration < 500,
});
sleep(1);
}
运行命令:`k6 run simple-test.js`
---
## 测试配置
### 常用选项
javascript
export const options = {
// 虚拟用户 (并发用户)
vus: 100,
// 测试持续时间
duration: '5m',
// 或者使用阶段进行升压/降压
stages: [
{ duration: '30s', target: 20 }, // 升压
{ duration: '1m', target: 100 }, // 保持在 100
{ duration: '30s', target: 0 }, // 降压
],
// 阈值 (SLA)
thresholds: {
http_req_duration: ['p(95)<500'], // 95% 的请求 < 500ms
http_req_failed: ['rate<0.01'], // 错误率 < 1%
},
// 负载区域 (分布式测试)
ext: {
loadimpact: {
name: 'My Load Te