Files
gongxue-base/docs/refactor/performance-benchmark-summary-20260630.md

40 lines
2.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 真实迁移数据 API 压测摘要
更新时间2026-06-30
这份文件只记录脱敏后的聚合指标,便于 README、上线门禁和后续 AI 开发继续引用。原始 JSON/Markdown 报告位于已忽略的 `docs/refactor/performance-reports/`,不要提交到 Git。
## 测试口径
- 环境:本地 Docker Desktop + 本地 Supabase/PostgreSQL + 本地 API 进程。
- 数据PocketBase 真实导出数据导入新 PostgreSQL 后压测。
- 数据规模:约 74,102 道题、1,597 个题目合集、3,102 个练习蓝图、3,500 个单词、2,676 条知识手册、3,670 个用户。
- 写入流量:开启真实刷题闭环,包含创建 session、拉取 session detail、提交若干答案、交卷和读取报告。
- 排行榜:未纳入默认压测,当前产品默认关闭排行榜。
- 说明:压测 worker 是无停顿请求流,不等同于真实在线学生数。真实在线容量需要前端埋点后按单个学生平均 RPS 折算。
## 结果
| 并发 worker | 时长 | 刷题写入比例 | 请求数 | 错误率 | 吞吐 | P95 | P99 |
| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: |
| 30 | 120s | 10% | 112,896 | 0.00% | 934.74 req/s | 64.26 ms | 81.14 ms |
| 50 | 120s | 10% | 92,737 | 0.00% | 767.24 req/s | 121.51 ms | 159.12 ms |
| 100 | 120s | 8% | 84,608 | 0.00% | 699.27 req/s | 254.69 ms | 331.84 ms |
| 150 | 120s | 6% | 82,693 | 0.00% | 682.40 req/s | 369.90 ms | 493.69 ms |
## 初步结论
- 本地 Docker 环境下100 个无停顿 worker 内 P95 仍低于 300ms可以作为当前代码和索引状态的本地舒适区参考。
- 150 个无停顿 worker 仍然 0 错误,但 P95 上升到约 370ms已经能看到压力拐点。
- 如果未来前端真实埋点显示每名在线学生平均 0.05 到 0.2 req/s则 700 req/s 理论吞吐约对应 3,500 到 14,000 名活跃在线学生请求量;这只是吞吐换算,不是生产 SLA。
- 正式容量承诺必须在目标 4 核 16G 云服务器、生产 PostgreSQL 参数、对象存储/CDN、真实前端请求节奏和生产网络下复跑。
## 后续复测
上云后按 `docs/refactor/performance-benchmark-runbook.md` 复跑至少以下场景:
1. 只读 30/50/100 并发阶梯。
2. 混合读写 30/50/100 并发阶梯。
3. 结合 `pg_stat_statements`、慢 SQL、CPU、I/O、连接池和锁等待确认瓶颈。
4. 把代表性结果写入本地 `docs/refactor/production-launch-evidence.json`,再执行 `npm run launch:gate`