docs: record backend capacity review

This commit is contained in:
Codex
2026-07-01 03:01:02 +08:00
parent ad1c69037b
commit 49358aae6b
8 changed files with 124 additions and 22 deletions

View File

@@ -6,7 +6,7 @@
## 当前状态
更新时间2026-06-30
更新时间2026-07-01
目前已经完成并在本地验证通过的内容:
@@ -75,6 +75,7 @@
- `docs/refactor/blueprint-coverage.md`
- `docs/refactor/api-structure.md`
- `docs/refactor/web-launch-acceptance-checklist.md`
- `docs/refactor/backend-open-items-and-capacity-20260701.md`
## 目录结构
@@ -593,7 +594,7 @@ npm --silent run smoke:taro:h5:interaction -- --json > docs/refactor/launch-arti
node scripts\taro-h5-release-guardrails-test.js --require-dist --require-runtime-config --json > docs/refactor/launch-artifacts/taro-h5-release-guardrails.json
```
最近一次本地真实迁移库数据规模约为 74,117 题、1,601 个题目合集、3,106 个练习蓝图、3,505 个单词、2,678 条知识手册、3,690 个用户、113,810 条答题记录、38,207 条错题和 458 条权益。压测 worker 是无停顿请求流,不能直接等同于真实在线学生数;前端完成后需要用真实页面埋点估算单个学生平均 RPS再折算在线容量。
最近一次本地真实迁移库已包含前期压测写入记录,当前规模约为 74,117 题、1,601 个题目合集、3,106 个练习蓝图、3,505 个单词、2,678 条知识手册、3,690 个用户、196,846 条答题记录、38,207 条错题和 466 条权益。压测 worker 是无停顿请求流,不能直接等同于真实在线学生数;前端完成后需要用真实页面埋点估算单个学生平均 RPS再折算在线容量。
| 并发 worker | 时长 | 刷题写入比例 | 请求数 | 错误率 | 吞吐 | P95 | P99 |
| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: |
@@ -612,6 +613,10 @@ node scripts\taro-h5-release-guardrails-test.js --require-dist --require-runtime
| 150 | 120s | 6% | 82,693 | 0.00% | 682.40 req/s | 369.90 ms | 493.69 ms |
| 100 | 120s | 8% | 84,694 | 0.00% | 699.54 req/s | 265.11 ms | 337.82 ms |
| 150 | 120s | 6% | 74,209 | 0.00% | 612.19 req/s | 446.37 ms | 579.39 ms |
| 30 | 120s | 0% | 64,382 | 0.00% | 532.97 req/s | 140.64 ms | 193.69 ms |
| 50 | 60s | 10% | 40,065 | 0.00% | 658.11 req/s | 151.63 ms | 188.07 ms |
| 100 | 60s | 8% | 37,290 | 0.00% | 610.57 req/s | 303.93 ms | 376.47 ms |
| 150 | 60s | 6% | 33,952 | 0.00% | 555.08 req/s | 490.53 ms | 639.05 ms |
只读上线门禁继续要求 `includeWrites=false`;混合读写报告需要显式使用 `--allow-writes` 做人工容量观察,例如:
@@ -621,10 +626,11 @@ npm run perf:summary -- --input docs/refactor/performance-reports/api-benchmark-
使用 `--allow-writes` 时会输出 `capacityObservation`,不输出 `launchGateCheck`,不能把写入场景误填成生产上线门禁的只读证据。
本地结论:100 个无停顿 worker、120 秒、8% 刷题写入闭环复测为 84,694 请求、0 错误、699.54 req/s、P95 265.11ms、P99 337.82ms,仍可作为当前本机 Docker 舒适区150 个无停顿 worker、120 秒6% 写入为 74,209 请求、0 错误、612.19 req/s、P95 446.37ms、P99 579.39ms,已进入压力区并出现吞吐回落。按单学生 0.05 到 0.2 req/s 的页面节奏粗略折算,100 worker 舒适区约对应 3,500 到 14,000 名活跃在线学生的请求吞吐观察区间150 worker 压力区约对应 3,000 到 12,200 名。这个折算不是生产 SLA压测 worker 也不等于在线人数。当前 PostgreSQL evidence 提醒本地默认库仍是 `jit=on``statement_timeout``idle_in_transaction_session_timeout``lock_timeout` 未设置,上云必须按调参文档复核。正式对外容量承诺必须在目标 4 核 16G 云服务器、生产 PostgreSQL 参数、生产对象存储/CDN 和真实前端请求节奏下复跑。脱敏摘要见:
本地结论:当前 Docker Desktop 分配 20 CPU、约 62.7GB 内存,高于常见 4 核 16G 云服务器,不能直接作为生产 SLA。2026-07-01 最新复核中50 worker/60 秒/10% 写入为 40,065 请求、0 错误、658.11 req/s、P95 151.63ms100 worker/60 秒/8% 写入为 37,290 请求、0 错误、610.57 req/s、P95 303.93ms,已接近舒适区上沿150 worker/60 秒/6% 写入为 33,952 请求、0 错误、555.08 req/s、P95 490.53ms,属于压力区。按单学生 0.05 到 0.2 req/s 的页面节奏粗略折算,当前本地舒适观察区间约对应 3,000 到 12,000 名活跃在线学生的请求吞吐。正式对外容量承诺必须在目标 4 核 16G 云服务器、生产 PostgreSQL 参数、生产对象存储/CDN 和真实前端请求节奏下复跑。脱敏摘要和剩余功能清单见:
```text
docs/refactor/performance-benchmark-summary-20260630.md
docs/refactor/backend-open-items-and-capacity-20260701.md
```
正式切换前建议使用 production 严格模式: