跳到内容

容量规划与性能基线

本文档用于 V1.0 前的容量规划和性能基线收口。它不是生产容量承诺,而是帮助维护者在发版前得到可复现的基础数字。

涉及真实支付、Web3、AI、直播、广告、短信、邮件、对象存储等外部依赖时,容量数字必须和 外部 Provider 验收清单 的真实验收记录分开描述;本地 mock / contract Provider 的吞吐不能代表厂商生产能力。

基线原则

  • 本地 smoke 只证明当前构建能在指定机器和指定依赖上稳定响应,不等同生产吞吐。
  • 正式容量规划必须记录机器规格、JDK、数据库、Redis、网络、JVM 参数、数据量和外部 Provider 模式。
  • 资金、支付、Web3、AI、短信和邮件等外部依赖不能用本地 mock 数字冒充真实容量。
  • 任何“容量上限”都必须来自生产等价环境压测,而不是开发机。

本地性能 smoke

仓库提供轻量脚本:

bash
./scripts/perf-smoke --base-url http://127.0.0.1:8000 --requests 200 --concurrency 100

脚本会对已启动应用执行:

  1. GET /actuator/health
  2. POST /api/v1/auth/login
  3. GET /api/v1/cms/pages?page=1&size=10

输出默认写入:

text
target/perf-smoke/perf-baseline.md

并保留 ApacheBench 原始输出:

text
target/perf-smoke/health.ab.txt
target/perf-smoke/login.ab.txt
target/perf-smoke/cms-pages.ab.txt

推荐发布前记录

发布前把本地或预发环境的结果补入发布说明:

建议记录
环境CPU / 内存 / OS / JDK / 数据库 / Redis
版本Git commit、Maven version、前端构建版本
数据量用户数、CMS 内容数、订单数、日志量
命令./scripts/perf-smoke ... 完整命令
数字RPS、平均延迟、失败数、非 2xx 数
结论只写“本环境 smoke 通过”,不写泛化容量承诺

当前本地基线

2026-06-24 在本机使用 lite profile、H2 文件库和隔离 APP_STORAGE_DIR 执行:

bash
APP_STORAGE_DIR=/Users/Home/Codes/Java/spring-open/target/perf-smoke-app \
SPRING_PROFILES_ACTIVE=lite \
SERVER_PORT=18082 \
java -jar spring-open-application/target/spring-open-application.jar

./scripts/perf-smoke \
  --base-url http://127.0.0.1:18082 \
  --requests 200 \
  --concurrency 100 \
  --output target/perf-smoke/perf-baseline.md

本轮基线结果:

场景RPS平均请求耗时失败请求非 2xx 响应
Health2848.56 / sec35.105 ms00
Login1128.33 / sec88.626 ms00
CMS pages809.49 / sec123.534 ms00

这组数字只表示本机 smoke 通过。真实发布说明需要重新记录当次机器规格、JVM 参数、数据库和数据量。

生产压测建议

当需要真实容量评估时,建议引入专门压测工程或外部工具:

  • 使用 JMeter、Gatling、k6 或云压测平台。
  • 独立部署数据库、Redis、对象存储和外部 Provider mock / sandbox。
  • 准备接近真实的数据量。
  • 覆盖登录、后台写操作、CMS / Mall 列表、下单、支付回调、队列消费和调度任务。
  • 同步观察应用指标、数据库连接池、Redis、慢 SQL、GC 和主机资源。

风险边界

  • 不要在生产库上执行破坏性压测。
  • 不要用管理员真实账号跑高并发写操作。
  • 不要把压测流量打到真实支付、短信、邮件、AI 或链上 Provider。
  • 不要用一次本地 smoke 数字推导生产 SLA。

Released under the Apache License 2.0.