文档目录

第 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)
❌ 跳过步骤五(剖析)→ 优化靠猜,可能改错地方
❌ 跳过步骤七(长稳)→ 上线后才发现泄漏
❌ 跳过"被否决的方案" → 报告显得没有评估过备选

每一步的必要性都在前面章节里解释过——这一章是检验你有没有真的接受那些纪律。