文档目录

第 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/

四、三个使用建议

  1. 不要跳步:现象量化 → 分层拆解 → 假设 → 验证 → 结论。跳过量化会让假设空间太大;跳过验证会让结论没有证据。
  2. 每个假设都写清"看什么能推翻它":这是本章最核心的纪律。
  3. 结论里必须有「被排除的假设」:它和"找到根因"同样重要——它证明你不是"碰巧找到一个看起来像的原因"。

五、最快的路径

如果你现在手头有一个真实的慢接口要排查,按这个顺序做:

# ① 填现象量化表(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 分钟能走完一轮——比"猜着改代码"快得多。