第 6 章配套代码索引
这一章的代码是分析工具——它们不产生数据,而是帮你从数据里得出结论。
一、文件清单
| 文件 | 对应小节 | 内容 |
|---|---|---|
| 01-analysis-workflow.md | 6.1 分析流程五步法 | 分析工作流模板 + 假设台账管理 |
| 02-latency-decomposition.md | 6.2 延迟分解 | 分解 PromQL + 自动计算脚本 |
| 03-flamegraph-reading.md | 6.3 火焰图读法 | diff 分析 + flat 排名 + 形状识别 |
| 04-thread-and-coroutine-dumps.md | 6.4 线程与协程快照 | 多快照对比分析器 + 协程 dump |
| 05-bottleneck-pools.md | 6.5 瓶颈模式库(一) | 池化类三合一诊断 |
| 06-bottleneck-data.md | 6.6 瓶颈模式库(二) | 数据类八种模式诊断 |
| 07-traps-kotlin-and-cpp.md | 6.7 陷阱清单 | 九条 Kotlin 陷阱的反例/正例 + 验证实验 |
| 08-writing-conclusions.md | 6.8 结论的写法 | 结论模板 + 证据自动打包 |
| 09-lab6.md | 6.9 Lab 6 | Lab 6 编排与证据矩阵 |
二、本章工具在流程中的位置
① 现象量化 → 01-analysis-workflow(量化表模板)
↓
② 分层拆解 → 02-latency-decomposition(PromQL + 计算)
↓
③ 提出假设 → 01-analysis-workflow(假设台账)
↓
④ 设计验证 → 03/04(火焰图、线程快照)
→ 05/06(按模式查对应的诊断)
↓
⑤ 得出结论 → 08-writing-conclusions(模板 + 证据打包)
三、依赖
# Python 侧(分析脚本)
# 本目录的脚本尽量只用标准库,无需额外安装
# 可选:FlameGraph 工具集(用于 diff 火焰图)
git clone https://github.com/brendangregg/FlameGraph
# 可选:JDK Mission Control(分析 JFR)
# https://jdk.java.net/jmc/
四、三个使用建议
- 不要跳步:现象量化 → 分层拆解 → 假设 → 验证 → 结论。跳过量化会让假设空间太大;跳过验证会让结论没有证据。
- 每个假设都写清"看什么能推翻它":这是本章最核心的纪律。
- 结论里必须有「被排除的假设」:它和"找到根因"同样重要——它证明你不是"碰巧找到一个看起来像的原因"。
五、最快的路径
如果你现在手头有一个真实的慢接口要排查,按这个顺序做:
# ① 填现象量化表(5 分钟)
cp docs/experiments/_TEMPLATE/README.md docs/experiments/E07/my-case.md
# 手动填入:谁慢、多慢、何时开始、影响范围
# ② 延迟分解(10 分钟)
# 用 02-latency-decomposition 的 PromQL 或脚本
# ③ 按分解结果选诊断脚本
# 排队类 → 05-bottleneck-pools
# 数据类 → 06-bottleneck-data
# ④ 写结论(15 分钟)
# 用 08-writing-conclusions 的模板
30 分钟能走完一轮——比"猜着改代码"快得多。