# TopFans 压测报告 ## 📋 运行信息 | 项 | 值 | |---|---| | **生成时间** | 2026-06-16 22:30:09 CST | | **压测开始** | 2026-06-16 22:17:37 CST | | **压测结束** | 2026-06-16 22:27:00 CST | | **总耗时** | 9m23s | | **目标地址** | `http://101.132.250.62:8080` | | **测试场景** | S1, S2, S4 | | **阶梯模式** | step (`5,10,20`) | | **JWT 签名密钥** | `topfans-***` (前 8 位) | | **prod SSH** | `root@101.132.250.62` | | **监控模式** | full | | **总请求数** | 5,268 | | **总错误数** | 0 (0.00%) | | **5xx 数** | 0 (0.00%) | --- ## 🎯 执行摘要 **总览**: ✅ 3 健康 / ⚠️ 0 警告 / 🚨 0 严重 (共 3) 🎉 **所有场景通过健康阈值,系统可承载预期负载。** **场景速览**: - ✅ **S1 用户登录** — p99=208ms, err 0.00% - ✅ **S2 浏览资产详情** — p99=38ms, err 0.00% - ✅ **S4 资产铸造 (mint)** — p99=28ms, err 0.00% --- ## 📊 总览表 | 场景 | 描述 | Total | Err | 5xx | P50ms | P95ms | P99ms | Maxms | 拐点 RPS | 状态 | |------|------|-------|-----|-----|-------|-------|-------|-------|---------|------| | **S1** | 用户登录 | 1,073 | 0 (0.00%) | 0 (0.00%) | 174 | 183 | 208 | 318 | — | ✅ | | **S2** | 浏览资产详情 | 2,097 | 0 (0.00%) | 0 (0.00%) | 24 | 31 | 38 | 154 | — | ✅ | | **S4** | 资产铸造 (mint) | 2,098 | 0 (0.00%) | 0 (0.00%) | 19 | 23 | 28 | 142 | — | ✅ | > 说明: Err 包含 4xx + 5xx,5xx 是子集。错误率 = Err / Total。 ## 🔬 跨场景瓶颈分析 ✅ **无明显瓶颈**,所有场景 P99 都在阈值内。 **P99 / 阈值 比率** (从高到低): - S1: 0.21x (208ms) - S2: 0.08x (38ms) - S4: 0.01x (28ms) --- ## ✅ S1 用户登录 ### 📌 测试说明 | 项 | 值 | |---|---| | **API** | `POST /api/v1/auth/login` | | **负载类型** | ✏️ 轻写 | | **业务说明** | 用户身份认证,签发 JWT | | **影响范围** | 🔴 所有用户必经路径,失败 = 用户进不来 | ### 📈 性能指标 vs 健康阈值 | 指标 | 实测 | 阈值 | 判定 | |------|------|------|------| | P50ms | 174 | ≤100 | 🚨 | | P95ms | 183 | ≤300 | ✅ | | P99ms | 208 | ≤1000 | ✅ | | Maxms | 318 | — | ℹ️ 参考 | | 错误率 | 0.00% | ≤1.00% | ✅ | | 5xx 率 | 0.00% | ≤0.10% | ✅ | ### 📍 拐点分析 ✅ **拐点未触发** — 全程 3 个 stage 健康运行,最高 20 RPS p99=208ms。 ### 🔢 阶梯结果 | Stage | TargetRPS | Total | Err | 5xx | P50ms | P95ms | P99ms | Maxms | 涨幅 | |-------|-----------|-------|-----|-----|-------|-------|-------|-------|------| | 1 | 5 | 300 | 0 | 0 | 142 | 151 | 175 | 242 | | | 2 | 10 | 388 | 0 | 0 | 175 | 182 | 212 | 337 | +21% | | 3 | 20 | 385 | 0 | 0 | 174 | 183 | 208 | 318 | -2% | ### 🎯 行动项 ✅ 无需行动项 — 所有指标在阈值内。 ### 📉 图表 ![S1 RPS / P99 / Error](.//s1.png) --- ## ✅ S2 浏览资产详情 ### 📌 测试说明 | 项 | 值 | |---|---| | **API** | `GET /api/v1/assets/{id}` | | **负载类型** | 📖 读 | | **业务说明** | 高频读路径,典型缓存命中场景 | | **影响范围** | 🟢 单用户最高频操作,影响页面加载体验 | ### 📈 性能指标 vs 健康阈值 | 指标 | 实测 | 阈值 | 判定 | |------|------|------|------| | P50ms | 24 | ≤50 | ✅ | | P95ms | 31 | ≤150 | ✅ | | P99ms | 38 | ≤500 | ✅ | | Maxms | 154 | — | ℹ️ 参考 | | 错误率 | 0.00% | ≤1.00% | ✅ | | 5xx 率 | 0.00% | ≤0.10% | ✅ | ### 📍 拐点分析 ✅ **拐点未触发** — 全程 3 个 stage 健康运行,最高 20 RPS p99=38ms。 ### 🔢 阶梯结果 | Stage | TargetRPS | Total | Err | 5xx | P50ms | P95ms | P99ms | Maxms | 涨幅 | |-------|-----------|-------|-----|-----|-------|-------|-------|-------|------| | 1 | 5 | 300 | 0 | 0 | 24 | 32 | 37 | 152 | | | 2 | 10 | 600 | 0 | 0 | 24 | 31 | 43 | 147 | +18% | | 3 | 20 | 1,197 | 0 | 0 | 24 | 31 | 38 | 154 | -13% | ### 🎯 行动项 ✅ 无需行动项 — 所有指标在阈值内。 ### 📉 图表 ![S2 RPS / P99 / Error](.//s2.png) --- ## ✅ S4 资产铸造 (mint) ### 📌 测试说明 | 项 | 值 | |---|---| | **API** | `POST /api/v1/assets/mints/precreate` | | **负载类型** | 🛠️ 重写 | | **业务说明** | 写重路径:OSS 上传 + 签名 + 事务落库 | | **影响范围** | 🟡 核心交易,影响创作者产出节奏 | ### 📈 性能指标 vs 健康阈值 | 指标 | 实测 | 阈值 | 判定 | |------|------|------|------| | P50ms | 19 | ≤300 | ✅ | | P95ms | 23 | ≤800 | ✅ | | P99ms | 28 | ≤2000 | ✅ | | Maxms | 142 | — | ℹ️ 参考 | | 错误率 | 0.00% | ≤1.00% | ✅ | | 5xx 率 | 0.00% | ≤0.10% | ✅ | ### 📍 拐点分析 ✅ **拐点未触发** — 全程 3 个 stage 健康运行,最高 20 RPS p99=28ms。 ### 🔢 阶梯结果 | Stage | TargetRPS | Total | Err | 5xx | P50ms | P95ms | P99ms | Maxms | 涨幅 | |-------|-----------|-------|-----|-----|-------|-------|-------|-------|------| | 1 | 5 | 300 | 0 | 0 | 19 | 25 | 32 | 46 | | | 2 | 10 | 600 | 0 | 0 | 19 | 24 | 33 | 145 | +3% | | 3 | 20 | 1,198 | 0 | 0 | 19 | 23 | 28 | 142 | -15% | ### 🎯 行动项 ✅ 无需行动项 — 所有指标在阈值内。 ### 📉 图表 ![S4 RPS / P99 / Error](.//s4.png) --- ## 📎 附录 ### 健康阈值说明 - **P50/P95/P99**: 百分位延迟 (毫秒),值越小越好 - **错误率**: 4xx+5xx 请求占比,健康 < 1% - **5xx 率**: 服务端错误率,健康 < 0.1% - **拐点**: 阶梯测试中,p99 相对前一 stage 涨幅 > 50% 的第一个 stage ### 文件清单 ``` reports/ ├── final-report.md (本文件) ├── baseline.csv (Excel 可打开的汇总) ├── s1.json ├── s1.png ├── s2.json ├── s2.png ├── s3.json ├── s3.png ├── s4.json ├── s4.png ├── s5.json ├── s5.png ├── s6.json ├── s6.png ├── s7.json ├── s7.png ``` ### 如何复现 ```bash cd /opt/topfans/loadtest ./loadgen --cmd=run --scenarios=S1,S2,S4 --stage=step --step-schedule='5,10,20' \ --target=http://101.132.250.62:8080 \ --monitor=full \ --prod-ssh=root@101.132.250.62 ```