第 9 章配套代码索引
这一章的代码是编排脚本 + 模板——具体的技术实现(火焰图、门禁、统计工具)都在前八章的
code/目录里。
一、文件清单
| 文件 | 对应小节 | 内容 |
|---|---|---|
| 01-project-setup.md | 9.1 项目设定与埋雷清单 | 服务骨架 + 六颗埋雷的完整代码 + verify-traps.sh |
| 02-step1-goals.md | 9.2 步骤一:定义目标 | SLO 表模板 + 延迟预算校验器 |
| 03-step2-build-service.md | 9.3 步骤二:搭服务与数据 | Compose + 建表 + 幂律灌数据 + 四层埋点 |
| 04-step3-baseline.md | 9.4 步骤三:建立基线与噪声底线 | 观测回路验证 + 基线 + 噪声底线编排 |
| 05-step4-capacity-curve.md | 9.5 步骤四:容量曲线与拐点 | 阶梯加压 + 饱和度时间线 + 拐点检测 |
| 06-step5-diagnose.md | 9.6 步骤五:剖析定位 | 拐点处取证 + 假设台账 + 瓶颈清单模板 |
| 07-step6-optimize.md | 9.7 步骤六:优化与验证 | 五项优化的实现 + 三问验证 + 否决记录 |
| 08-step7-soak-and-regression.md | 9.8 步骤七:长稳与回归 | 浸泡 + 缓存雪崩检测 + 三回归 |
| 09-step8-gate-and-report.md | 9.9 步骤八:固化门禁与交付报告 | 门禁 + 告警 + 容量表 + 报告模板 |
二、八步一键编排
# 每一步都可以单独跑,也可以按顺序全跑
tools/capstone.sh 1 # 定义目标
tools/capstone.sh 2 # 搭服务与数据
tools/capstone.sh 3 # 基线与噪声底线
tools/capstone.sh 4 # 容量曲线
tools/capstone.sh 5 # 剖析定位
tools/capstone.sh 6 # 优化与验证
tools/capstone.sh 7 # 长稳与回归
tools/capstone.sh 8 # 固化与报告
# 查看整体进度
tools/capstone.sh status
脚本的定义在 09-step8-gate-and-report.md 的最后(因为它需要所有前置产出物)。
三、前八章的代码复用对照表
本章几乎不写新的技术代码——它复用前八章的:
| 需要什么 | 去哪找 |
|---|---|
| SLO 校验器 | code/01-metrics-and-slo/04-writing-slo.md |
| 延迟预算校验器 | code/01-metrics-and-slo/05-latency-budget.md |
| 四层指标埋点 | code/01-metrics-and-slo/01-four-layers-of-metrics.md |
| 依赖级计时 + 延迟分解 | code/01-metrics-and-slo/03-measurement-points.md |
| 环境元数据采集 | code/01-metrics-and-slo/07-experiment-metadata.md |
| k6 三种负载曲线 | code/03-test-pyramid/04-load-profiles.md |
| 浸泡脚本 + 泄漏判定 | code/03-test-pyramid/05-soak-testing.md |
| 崩溃取证 | code/03-test-pyramid/06-breakdown-testing.md |
| 压测机自查 | code/04-toolchain/01-load-generators.md |
| asprof 命令全集 | code/04-toolchain/03-async-profiler.md |
| JFR 配置与取证 | code/04-toolchain/04-jfr-and-jcmd.md |
| 系统快照 | code/04-toolchain/05-system-observability.md |
| PG 四诊断 + 池判定 | code/04-toolchain/07-data-and-middleware.md |
| 节流诊断 | code/04-toolchain/08-container-interference.md |
| A/B/A’ 编排 | code/05-experiment-design/01-single-variable.md |
| 稳健统计 + 异常值 | code/05-experiment-design/03-repetition-and-outliers.md |
| 显著性检验 | code/05-experiment-design/06-statistics-basics.md |
| 噪声底线 + MDD | code/05-experiment-design/07-noise-floor-and-regression.md |
| 假设台账 | code/06-analysis-and-profiling/01-analysis-workflow.md |
| 火焰图形状分析 | code/06-analysis-and-profiling/03-flamegraph-reading.md |
| 线程/协程快照分析 | code/06-analysis-and-profiling/04-thread-and-coroutine-dumps.md |
| 池化类诊断 | code/06-analysis-and-profiling/05-bottleneck-pools.md |
| 数据类诊断 + GC 对齐 | code/06-analysis-and-profiling/06-bottleneck-data.md |
| 优先级排序 | code/07-optimization-and-validation/01-priority-pyramid.md |
| 韧性客户端 | code/07-optimization-and-validation/05-backpressure-and-resilience.md |
| 连接池计算 | code/07-optimization-and-validation/06-pooling.md |
| 三问检查 + 报告生成 | code/07-optimization-and-validation/08-optimization-discipline.md |
| CI 门禁 + 比较脚本 | code/08-continuous-performance/02-ci-benchmark-gate.md |
| 告警规则 + 有效率复盘 | code/08-continuous-performance/05-alerting.md |
| 容量计算 + 复测 | code/08-continuous-performance/07-capacity-planning.md |
| 评审清单 + 周报 | code/08-continuous-performance/08-review-and-org.md |
四、这一章为什么"代码最少"
因为性能工程的核心不是代码,是流程与判断。
前八章教你:怎么测(指标、工具、统计、剖析、优化、门禁)
这一章教你:怎么把它们串起来,用在真实项目上
如果你发现自己在这一章"写了很多新代码",可能说明:
- 前面某一章的代码没复用(比如自己重新写了一个统计脚本);
- 或者你在写业务代码(服务本身的实现),而不是性能工程代码。
业务代码是必要的(步骤二要写服务),但性能工程的基础设施应该复用。
五、最大的坑
本章最常见的失败不是技术问题,而是"流程跳跃":
❌ 跳过步骤三(基线)→ 步骤六无法验证优化效果(没有 before)
❌ 跳过步骤五(剖析)→ 优化靠猜,可能改错地方
❌ 跳过步骤七(长稳)→ 上线后才发现泄漏
❌ 跳过"被否决的方案" → 报告显得没有评估过备选
每一步的必要性都在前面章节里解释过——这一章是检验你有没有真的接受那些纪律。