关于 load-testing-apis
用于规划和分析 API 负载、压力及浸泡测试的技能,可生成 k6、Artillery 等工具的脚本,模拟流量并按阈值报告性能与瓶颈。
主要功能
- 01规划负载、压力和浸泡测试
- 02生成 k6 与 Artillery 脚本
- 03配置流量场景
- 04设置通过与失败阈值
- 05生成性能和瓶颈报告
适用场景
- 01依据 SLO 衡量 API 性能
- 02测试 API 应对流量突增的能力
- 03查找持续负载测试中的瓶颈
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ jeremylongshore/ tons-of-skills-marketplace --skill load-testing-apis安装后在 Claude Code 中输入/load-testing-apis确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/errors.mdexamples.mdimplementation.md详细介绍
API 负载测试
概述
执行全面的负载、压力和浸泡测试,以验证 API 性能、找出瓶颈并建立吞吐量基准。生成适用于 k6、Artillery 或 wrk 的测试脚本,通过可配置的虚拟用户递增、请求分布和失败阈值断言来模拟真实流量模式。
前置条件
- 已安装负载测试工具:k6(推荐)、Artillery、wrk 或 Apache JMeter
- 目标 API 已部署在预发布或性能测试环境中(除非有防护措施,否则切勿对生产环境进行负载测试)
- 可访问监控系统:Grafana/Prometheus、Datadog 或 CloudWatch,用于将测试结果与服务器指标相关联
- 用于测试的 API 身份验证凭据(API 密钥、测试用户 JWT 令牌)
- 已定义性能基准 SLO(目标 p95 延迟、最大错误率、最低吞吐量)
说明
- 使用 Glob 和 Read 阅读 API 规范和路由定义,整理完整的端点清单,并找出高流量路径和资源密集型操作。
- 定义模拟真实用户行为的测试场景:浏览(80% 为读取操作)、结账(读写混合)和流量激增模式,并为请求之间设置合适的思考时间。
- 生成 k6 或 Artillery 测试脚本,并配置各阶段:递增(2 min)、持续负载(10 min)、流量激增(以 3x 负载持续 2 min)和降载(2 min)。
- 配置请求分布以匹配生产流量模式——按权重在各端点间随机选择,而非均匀分布。
- 为通过/失败标准添加阈值断言:p95 响应时间 < 500ms、错误率 < 1%、吞吐量 > 100 requests/second。
- 使用 CSV 或 JSON 测试数据固定文件实现数据驱动请求,包括真实的负载数据、唯一用户 ID 和多样化的查询参数,避免测试只依赖缓存。
- 在预期生产负载下执行基准测试,然后逐步提升到 2x、5x 和 10x,以找出临界点和饱和行为。
- 分析结果:将延迟峰值与服务器指标(CPU、内存、DB 连接、事件循环延迟)相关联,找出瓶颈(数据库、网络、计算),并记录分析结果。
- 生成性能报告,将测试结果与 SLO 阈值进行比较,并提出优化建议。
完整实现指南请参阅 ${CLAUDE_SKILL_DIR}/references/implementation.md。
输出
${CLAUDE_SKILL_DIR}/load-tests/scenarios/- 按流量场景划分的 k6/Artillery 测试脚本${CLAUDE_SKILL_DIR}/load-tests/data/- 测试数据固定文件(用户、负载数据、令牌)${CLAUDE_SKILL_DIR}/load-tests/thresholds.json- 通过/失败阈值配置${CLAUDE_SKILL_DIR}/reports/load-test-results.json- 包含计时数据的原始测试结果${CLAUDE_SKILL_DIR}/reports/load-test-summary.md- 易读的性能分析报告${CLAUDE_SKILL_DIR}/reports/bottleneck-analysis.md- 已识别的瓶颈及修复建议
错误处理
| 错误 | 原因 | 解决方案 |
|---|---|---|
| 连接被拒绝 | 目标服务器的文件描述符耗尽或连接池已满 | 提高服务器的 ulimit 和连接池大小;注意并发连接限制 |
| 递增负载时出现超时峰值 | 服务器无法处理连接建立速率 | 提前预热连接;延长递增时长;添加连接池 |
| 429 响应占据结果的大部分 | 负载测试期间触发了速率限制器 | 在速率限制器中将负载测试源 IP 加入白名单;或单独测试速率限制器行为 |
| 基准测试结果不一致 | 共享的预发布环境中存在其他流量 | 隔离测试环境;在非工作时间运行测试;使用专用性能测试环境 |
| 检测到内存泄漏 | 浸泡测试显示内存持续数小时增长 | 通知开发团队;通过隔离测试场景找出发生泄漏的端点 |
详细的错误模式请参阅 ${CLAUDE_SKILL_DIR}/references/errors.md。
示例
电商结账流程:模拟 500 个并发用户浏览商品(GET,占 70%)、加入购物车(POST,占 20%)和完成结账(POST,占 10%),并在操作间设置 2–5 秒的思考时间。
API 突发测试:在 30 秒内将虚拟用户数从 50 提升至 1000,以模拟营销活动上线带来的流量激增,验证自动扩缩容是否响应,以及延迟能否在 60 秒内恢复。
内存泄漏浸泡测试:让 200 个并发用户持续运行 4 小时,监控服务器内存、连接数和响应时间,查找表明资源泄漏的性能退化模式。
更多示例请参阅 ${CLAUDE_SKILL_DIR}/references/examples.md。
资源
- k6 文档:https://k6.io/docs/
- Artillery 文档:https://www.artillery.io/docs
- Google SRE:负载测试章节
- 性能测试反模式与最佳实践
评论
支持 Markdown