关于 performance-testing
用于规划性能测试并分析系统负载表现的参考技能,涵盖 API、数据库和算法测量,并提供多种测试工具的指南。
主要功能
- 01API 负载与延迟测试
- 02数据库查询性能分析
- 03k6、JMeter、pytest-benchmark 和 JMH 指南
- 04监控与瓶颈分析
适用场景
- 01验证响应时间和吞吐量要求
- 02测试并发用户承载能力
- 03比较优化前后的性能
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ aj-geddes/ useful-ai-prompts --skill performance-testing安装后在 Claude Code 中输入/performance-testing确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/apache-jmeter.mddatabase-query-performance.mdjmh-for-java-benchmarking.mdk6-for-api-load-testing.mdpytest-benchmark-for-python.mdreal-time-monitoring.mdscripts/validate-api.shtemplates/api-scaffold.yaml详细介绍
性能测试
目录
概述
性能测试用于衡量系统在各种负载条件下的表现,包括响应时间、吞吐量、资源利用率和可扩展性。它有助于发现瓶颈、验证性能要求,并确保系统能够处理预期负载。
适用场景
- 验证响应时间要求
- 衡量 API 吞吐量和延迟
- 测试数据库查询性能
- 发现性能瓶颈
- 比较算法效率
- 比较优化前后的性能
- 验证缓存效果
- 测试并发用户承载能力
快速入门
最简可用示例:
// load-test.js
import http from "k6/http";
import { check, sleep } from "k6";
import { Rate, Trend } from "k6/metrics";
// Custom metrics
const errorRate = new Rate("errors");
const orderDuration = new Trend("order_duration");
// Test configuration
export const options = {
stages: [
{ duration: "2m", target: 10 }, // Ramp up to 10 users
{ duration: "5m", target: 10 }, // Stay at 10 users
{ duration: "2m", target: 50 }, // Ramp up to 50 users
{ duration: "5m", target: 50 }, // Stay at 50 users
{ duration: "2m", target: 0 }, // Ramp down to 0
],
thresholds: {
http_req_duration: ["p(95)<500"], // 95% of requests under 500ms
http_req_failed: ["rate<0.01"], // Error rate under 1%
errors: ["rate<0.1"], // Custom error rate under 10%
},
};
// ... (see reference guides for full implementation)
参考指南
references/ 目录中的详细实现:
| 指南 | 内容 |
|---|---|
| k6 用于 API 负载测试 | k6 用于 API 负载测试 |
| Apache JMeter | Apache JMeter |
| 用于 Python 的 pytest-benchmark | 用于 Python 的 pytest-benchmark |
| 用于 Java 基准测试的 JMH | 用于 Java 基准测试的 JMH |
| 数据库查询性能 | 数据库查询性能 |
| 实时监控 | 实时监控 |
最佳实践
✅ 应该做
- 明确性能要求(SLA)
- 使用符合实际情况的数据量进行测试
- 监控资源利用率
- 测试缓存效果
- 使用百分位数(P95、P99),而非平均值
- 测量前先预热
- 在接近生产环境的环境中运行测试
- 发现并修复 N+1 查询问题
❌ 不应该做
- 只使用小型数据集进行测试
- 忽略内存泄漏
- 在不符合实际情况的环境中测试
- 只关注平均响应时间
- 跳过数据库索引分析
- 只测试正常流程
- 忽略网络延迟
- 未考虑统计显著性就进行比较
评论
支持 Markdown