文档目录
配套代码
各小节的配套代码骨架与教学模拟程序。
本节目录
- A/B/A' 对照编排与环境漂移检测 5.1 配套代码:A/B/A’ 对照编排与环境漂移检测 对应小节:5.1 单变量与对照组 核心:回滚验证(A→B→A’) 能把「环境漂移」和「真实的优化效果 …
- k6 进阶用法与压测机自查 4.1 配套代码:k6 进阶用法与压测机自查 对应小节:4.1 负载生成器 基础的三种曲线在 第 3 章 code 04,这里只给本章新增的部分。 一、多场 …
- 从延迟分解到优先级排序 7.1 配套代码:从延迟分解到优先级排序 对应小节:7.1 优先级金字塔 把「延迟分解的结果」自动映射到「该从哪一级开始优化」。 一、延迟分解 → 层级映射 …
- 分析工作流与假设台账 6.1 配套代码:分析工作流与假设台账 对应小节:6.1 分析流程五步法 两个工具:① 现象量化表模板;② 假设台账管理(让每个假设都有验证状态)。 一、现 …
- 台阶式提升与 PrintCompilation 解读 2.1 配套代码:台阶式提升与 PrintCompilation 解读 对应小节:2.1 四种执行形态 要验证的结论:同一份代码在不同调用次数下的性能是台阶 …
- 同一个函数,为什么测出三个不同的数字 0.1 配套代码:同一个函数,为什么测出三个不同的数字 对应小节:0.1 三类问题必须分开处理 要验证的结论:「这段代码要 2 μs」是一个不完整的陈述—— …
- 四层指标的埋点骨架 1.1 配套代码:四层指标的埋点骨架 对应小节:1.1 指标分四层 这份代码是可以直接抄进项目的骨架。 一、注册表与四层指标的对应关系 // …
- 渐进退化模拟与门禁经济性 8.1 配套代码:渐进退化模拟与门禁经济性 对应小节:8.1 为什么需要门禁 两件事:① 用数据展示「渐进退化」如何逃过人工评审;② 算清门禁的经济性。 一 …
- 短链服务骨架与六颗埋雷 9.1 配套代码:短链服务骨架与六颗埋雷 对应小节:9.1 项目设定与埋雷清单 这是唯一一节需要写较多业务代码的地方——之后的章节都是编排与模板。 一、目录 …
- CI 微基准门禁 8.2 配套代码:CI 微基准门禁 对应小节:8.2 CI 微基准门禁 四个部分:① CI workflow;② 比较脚本;③ 噪声分析;④ 误报日志。 一 …
- SLO 表与延迟预算校验 9.2 配套代码:SLO 表与延迟预算校验 对应小节:9.2 步骤一:定义目标 一、SLO 定义文件 # perf/slo.yaml —— 单一事实源:文档 …
- 减少工作的五种模式 7.2 配套代码:减少工作的五种模式 对应小节:7.2 减少工作 每种模式给「反例 → 正例 → 验证方法」,以及一份可自动扫描的审查清单。 一、❶ 批处理 …
- 延迟分解的 PromQL 与自动计算 6.2 配套代码:延迟分解的 PromQL 与自动计算 对应小节:6.2 延迟分解 把「三段减法」变成可执行的查询与脚本。 一、三段分解的 PromQL …
- 时长规划与预热判定 5.2 配套代码:时长规划与预热判定 对应小节:5.2 预热、稳态与运行时长 两件事:① 由周期推导时长;② 自动判定预热是否结束。 一、时长规划器 // …
- 直方图合并实验 1.2 配套代码:直方图合并实验 对应小节:1.2 百分位不可平均 要验证的结论:把多实例的 P99 求平均,会错得离谱且方向不确定;合并直方图才是正解。 …
- 组件基准(Testcontainers + 采样循环) 3.2 配套代码:组件基准(Testcontainers + 采样循环) 对应小节:3.2 组件基准 这份代码可以直接改造成你自己项目的组件基准。 一、测试 …
- 调用点类型数量与去优化 2.2 配套代码:调用点类型数量与去优化 对应小节:2.2 JIT 的三大优化与去优化 要验证的结论:同一个调用点混入的类型越多,性能越差;而且退化不是按比 …
- async-profiler 命令全集与火焰图解读 4.3 配套代码:async-profiler 命令全集与火焰图解读 对应小节:4.3 async-profiler 这份文件是命令速查 + 判读手册,建议 …
- 三个测量点的埋点与延迟分解 1.3 配套代码:三个测量点的埋点与延迟分解 对应小节:1.3 测量点 目标:让代码能回答「这个接口的 P99 里,数据库占多少毫秒、排队占多少毫秒、我写的 …
- 全链路性能门禁 8.3 配套代码:全链路性能门禁 对应小节:8.3 全链路性能门禁 一份完整的门禁脚本,含饱和度检查(最容易被忽略但最有价值的一项)。 一、完整的全链路门禁 …
- 均值如何骗人,尾部如何放大 0.3 配套代码:均值如何骗人,尾部如何放大 对应小节:0.3 延迟是分布,不是数字 要验证的三个结论:① 均值掩盖长尾 ② 尾延迟跨服务放大 ③ 百分位不 …
- 并行度调优与隔板 7.3 配套代码:并行度调优与隔板 对应小节:7.3 并发与并行 两件事:① 用实验找到最优并行度;② 用隔板实现资源隔离。 一、并行度调优实验 // …
- 微基准四大陷阱的现场复现 2.3 配套代码:微基准四大陷阱的现场复现 对应小节:2.3 微基准四大陷阱 每个陷阱都写「坏版本」和「好版本」,并排跑,让差异自己说话。 一、完整实验代码 …
- 搭服务与造数据 9.3 配套代码:搭服务与造数据 对应小节:9.3 步骤二:搭服务与数据 一、docker-compose # …
- 火焰图的分析辅助 6.3 配套代码:火焰图的分析辅助 对应小节:6.3 火焰图读法 三件事:① 从 flat 输出快速找热点;② diff 两次火焰图;③ 自动识别形状特征。 …
- 稳健统计与异常值归因 5.3 配套代码:稳健统计与异常值归因 对应小节:5.3 重复、抖动与异常值 核心:报中位数与四分位距,而不是平均值;异常值要归因,不能随手删。 一、稳健统 …
- 集成基准与全链路压测 3.3 配套代码:集成基准与全链路压测 对应小节:3.3 集成基准与全链路 两层各一份代码:集成基准(单服务完整启动)与全链路 k6(多进程/多机)。 一、 …
- JFR 三种用法与 jcmd 应急手册 4.4 配套代码:JFR 三种用法与 jcmd 应急手册 对应小节:4.4 JFR 与 jcmd 这份文件是可以直接贴进生产配置的 JFR 参数,以及 …
- Little's Law 容量计算器 0.4 配套代码:Little’s Law 容量计算器 对应小节:0.4 用 Little’s Law 估算容量 要验证的结论:用平均值配置资源是危险的;峰 …
- SLI 采集与错误预算 8.4 配套代码:SLI 采集与错误预算 对应小节:8.4 生产观测:SLI 与错误预算 三部分:① SLO 定义(可执行);② 错误预算 PromQL;③ …
- 三种负载曲线的 k6 脚本 3.4 配套代码:三种负载曲线的 k6 脚本 对应小节:3.4 负载曲线 三份可直接运行的脚本:阶梯加压、恒定到达率、尖峰测试。 一、阶梯加压:找拐点 // …
- 基线与噪声底线 9.4 配套代码:基线与噪声底线 对应小节:9.4 步骤三:建立基线与噪声底线 一、先验证观测回路(不测性能,只验证"仪表能读数") …
- 把 SLO 写成代码 1.4 配套代码:把 SLO 写成代码 对应小节:1.4 SLO 的四要素写法 核心思路:让「SLO 写得不完整」这件事在编译期或测试期就失败,而不是等到验 …
- 环境检查与事件时间线 5.4 配套代码:环境检查与事件时间线 对应小节:5.4 环境隔离清单 两件事:① 实验前逐项检查环境;② 实验期间记录事件时间线(用于解释异常)。 一、环 …
- 用数据判定稳态 + 冷启动测量 2.4 配套代码:用数据判定稳态 + 冷启动测量 对应小节:2.4 预热、稳态与冷启动 两个工具:① 滚动变异系数(CV)自动判定稳态;② 冷启动分段计时。 …
- 线程与协程快照分析 6.4 配套代码:线程与协程快照分析 对应小节:6.4 线程与协程快照 两件事:① 多份快照的对比分析;② 协程快照与协程泄漏检测。 一、多份快照的对比分析 …
- 缓存的三重防护与代价评估 7.4 配套代码:缓存的三重防护与代价评估 对应小节:7.4 缓存 一份可直接抄用的 Caffeine 实现(含三重防护),以及缓存对 P99 影响的计算工 …
- 分配速率、GC 日志与 Humongous 对象 2.5 配套代码:分配速率、GC 日志与 Humongous 对象 对应小节:2.5 内存与 GC 三件事:① 亲眼看到「分配速率决定 GC 频率」② 读懂 …
- 告警规则与有效率复盘 8.5 配套代码:告警规则与有效率复盘 对应小节:8.5 告警设计:燃烧率与领先指标 两部分:① 完整的告警规则(含 runbook);② 告警有效率复盘脚 …
- 容量曲线与拐点 9.5 配套代码:容量曲线与拐点 对应小节:9.5 步骤四:容量曲线与拐点 一、阶梯加压脚本 // perf/k6/capacity.js import …
- 延迟预算的自洽性检查与超时链推导 1.5 配套代码:延迟预算的自洽性检查与超时链推导 对应小节:1.5 延迟预算 两份代码解决两个问题:① 预算表加起来超了没有?② 超时设置是不是逐层递减的 …
- 排队模拟——为什么 90% 利用率已经很危险 0.5 配套代码:排队模拟——为什么 90% 利用率已经很危险 对应小节:0.5 为什么 90% 利用率已经很危险 要验证的三个结论:① 排队时间的非线性爆 …
- 数据集生成与分布验证 5.5 配套代码:数据集生成与分布验证 对应小节:5.5 数据集设计 两件事:① 生成幂律分布的数据;② 验证你的数据集是否真的符合预期分布。 一、幂律(齐 …
- 池化类瓶颈三合一诊断 6.5 配套代码:池化类瓶颈三合一诊断 对应小节:6.5 瓶颈模式库(一):池化类 一条命令同时检查连接池 / 线程池 / 调度器三种池化瓶颈。 一、三合一 …
- 浸泡测试与泄漏判定 3.5 配套代码:浸泡测试与泄漏判定 对应小节:3.5 浸泡测试 两份东西:① 浸泡压测 + 指标采样脚本;② 判定「是泄漏还是正常锯齿」的分析脚本。 一、 …
- 系统级观测命令与快照脚本 4.5 配套代码:系统级观测命令与快照脚本 对应小节:4.5 系统级观测 一条命令采集完整的系统快照——比逐个敲命令更不容易漏项。 一、一键系统快照脚本 …
- 韧性客户端与超时审计 7.5 配套代码:韧性客户端与超时审计 对应小节:7.5 背压与韧性 三部分:① 完整的韧性客户端;② 超时预算审计;③ 受限重试的实现。 一、完整的韧性客 …
- 剖析定位与假设台账 9.6 配套代码:剖析定位与假设台账 对应小节:9.6 步骤五:剖析定位 一、在拐点处取证(五步法的前四步) #!/usr/bin/env bash # …
- 并发原语成本表与伪共享 2.6 配套代码:并发原语成本表与伪共享 对应小节:2.6 并发原语成本与伪共享 两个实验:① 测出你自己的并发成本表;② 复现伪共享并验证修法。 一、实验 …
- 数据与算法类瓶颈诊断 6.6 配套代码:数据与算法类瓶颈诊断 对应小节:6.6 瓶颈模式库(二):数据与算法类 八种模式各有对应的诊断查询——这份文件把它们集中起来,一条命令全查 …
- 流量回放、副作用阻断与金丝雀 8.6 配套代码:流量回放、副作用阻断与金丝雀 对应小节:8.6 流量回放与金丝雀发布 四部分:① 日志脱敏;② 副作用阻断;③ 影子流量配置;④ 金丝雀监 …
- 破坏性测试的取证与恢复测量 3.6 配套代码:破坏性测试的取证与恢复测量 对应小节:3.6 破坏性测试 核心:崩溃形态比崩溃点更重要,而崩溃现场无法事后复现,必须当场采集。 一、压到崩 …
- 连接池计算与对象池成本对比 7.6 配套代码:连接池计算与对象池成本对比 对应小节:7.6 池化与复用 两件事:① 用 Little’s Law 算连接池大小;② 用实验证明「对象池在 …
- 追踪、日志与基数控制 4.6 配套代码:追踪、日志与基数控制 对应小节:4.6 应用可观测性 三部分:① OpenTelemetry 追踪接入;② 日志异步化与降开销;③ 指标基 …
- 闭环 vs 开环——P99 差 500 倍的实验 0.6 配套代码:闭环 vs 开环——P99 差 500 倍的实验 对应小节:0.6 协调遗漏:压测报告的最大谎言 要验证的结论:同一个服务、同一段卡顿,闭 …
- 阶梯加压、拐点检测与容量推算 1.6 配套代码:阶梯加压、拐点检测与容量推算 对应小节:1.6 基线与容量曲线 三件事:① 压出曲线 ② 找到拐点 ③ 推出安全容量与副本数。 一、阶梯加 …
- 非参数检验与 Bootstrap 置信区间 5.6 配套代码:非参数检验与 Bootstrap 置信区间 对应小节:5.6 统计基础 纯 Python 标准库实现,不依赖 scipy——这样在任何环境 …
- GC 对比实验与参数确认 7.7 配套代码:GC 对比实验与参数确认 对应小节:7.7 JVM 调优 三件事:① 对比不同 GC;② 确认 JVM 实际参数;③ 堆大小与停顿的关系实 …
- 优化、验证与否决 9.7 配套代码:优化、验证与否决 对应小节:9.7 步骤六:优化与验证 一、优化清单与顺序(先算,再改) #!/usr/bin/env python3 …
- 协程开销与调度器饥饿实验 2.7 配套代码:协程开销与调度器饥饿实验 对应小节:2.7 协程的真实开销模型 第二个实验是本章最重要的一个:它让你亲眼看到「阻塞调用污染调度器」造成的全 …
- 噪声底线测量与回归门禁 5.7 配套代码:噪声底线测量与回归门禁 对应小节:5.7 噪声底线与回归检测 这是本章最重要的一份代码。 它产出你后续所有实验的标尺。 一、噪声底线测量流 …
- 容量计算、复测与告警 8.7 配套代码:容量计算、复测与告警 对应小节:8.7 容量规划 三部分:① 容量计算器(含约束检查);② 简化复测脚本;③ 容量告警。 一、容量计算器( …
- 层级选择辅助与测试预算计算 3.7 配套代码:层级选择辅助与测试预算计算 对应小节:3.7 层级选择与成本 两件小工具:① 层级选择辅助(把你的问题映射到层级);② 测试成本计算(量化 …
- 数据库、连接池与缓存观测 4.7 配套代码:数据库、连接池与缓存观测 对应小节:4.7 数据与中间件观测 核心:先区分「等连接」和「查询慢」,再决定优化方向。 一 …
- 环境元数据自动采集 1.7 配套代码:环境元数据自动采集 对应小节:1.7 实验元数据 核心原则:手写一定会漏,脚本不会。 一、采集脚本 #!/usr/bin/env bash …
- 陷阱的反例、正例与验证 6.7 配套代码:陷阱的反例、正例与验证 对应小节:6.7 陷阱清单:Kotlin 与 C++ 直觉 九条 Kotlin 陷阱的可运行对照代码,以及三个验证 …
- JMH 与 kotlinx-benchmark 的完整配置 2.8 配套代码:JMH 与 kotlinx-benchmark 的完整配置 对应小节:2.8 JMH 与 kotlinx-benchmark 这份配置可以 …
- Lab 3 的实验编排 3.8 配套代码:Lab 3 的实验编排 对应小节:3.8 Lab 3 这份文件把前面的代码组织成一条流水线,并给出记录模板。 一、Lab 3 的目录与代码 …
- 三问纪律与收益报告 7.8 配套代码:三问纪律与收益报告 对应小节:7.8 三问纪律与收益报告 三件事:① 三问检查清单;② 收益报告生成器;③ 否决记录管理。 一、三问检查清 …
- 容器节流诊断与环境一致性检查 4.8 配套代码:容器节流诊断与环境一致性检查 对应小节:4.8 容器与编排的干扰 核心:一条命令确认「你的进程有没有被周期性掐停」。 一、节流诊断脚本(最 …
- 结论强度自评与反模式检查 5.8 配套代码:结论强度自评与反模式检查 对应小节:5.8 实验记录与常见反模式 两份工具:① 报告前的结论强度自评;② 自动扫描实验档案里的反模式信号。 …
- 结论模板与证据打包 6.8 配套代码:结论模板与证据打包 对应小节:6.8 结论的写法 两件事:① 结论模板;② 把证据文件自动打包成可交付的报告。 一、结论模板 <!-- …
- 评审清单、周报与业务语言 8.8 配套代码:评审清单、周报与业务语言 对应小节:8.8 性能评审与组织落地 三部分:① PR 模板(关键 5 项);② 性能周报生成器;③ 业务语言翻 …
- 长稳浸泡与三种回归 9.8 配套代码:长稳浸泡与三种回归 对应小节:9.8 步骤七:长稳与回归 一、浸泡测试编排(1 小时) #!/usr/bin/env bash # …
- Lab 1 的填写模板与算术校验 1.9 配套代码:Lab 1 的填写模板与算术校验 对应小节:1.9 Lab 1 这里给的是能直接复制粘贴的模板,以及一个帮你做预算加法的校验器。 一 …
- Lab 2 的实验骨架 2.9 配套代码:Lab 2 的实验骨架 对应小节:2.9 Lab 2 这里提供 Lab 2 五个任务的代码骨架与记录模板。任务 3、4 的完整代码在 06 …
- Lab 4 观测回路的编排与验收 4.9 配套代码:Lab 4 观测回路的编排与验收 对应小节:4.9 Lab 4 把本章的工具串成一条回路,并自动化验证。 一、观测栈(最小的 …
- Lab 5 编排与验收 5.9 配套代码:Lab 5 编排与验收 对应小节:5.9 Lab 5 把本章的工具串成一条完整流程,并自动验收。 一、Lab 5 一键编排 …
- Lab 6 编排与证据矩阵 6.9 配套代码:Lab 6 编排与证据矩阵 对应小节:6.9 Lab 6 三个埋雷接口 + 分批取证 + 证据矩阵自动生成。 一、三个埋雷接口 // …
- Lab 7 优化编排与验证 7.9 配套代码:Lab 7 优化编排与验证 对应小节:7.9 Lab 7 把「优化 → 测 → 记录 → 否决」串成可执行流程。 一、Lab 7 的目录结 …
- Lab 8 编排与零误报验证 8.9 配套代码:Lab 8 编排与零误报验证 对应小节:8.9 Lab 8 把「建门禁 → 测噪声 → 定阈值 → 验证零误报」串成可执行流程。 一 …
- 门禁、告警、容量表与报告 9.9 配套代码:门禁、告警、容量表与报告 对应小节:9.9 步骤八:固化门禁与交付报告 一、CI 门禁(从这次实验里"长出来"的门禁) # …
- Lab 0 —— 先被骗一次 0.10 配套代码:Lab 0 —— 先被骗一次 对应小节:0.10 Lab 0:先被骗一次 目标:亲手制造一个物理上不可能的性能数字,然后看它如何被修正。 …
- 第 0 章配套代码索引 第 0 章配套代码索引 这些是教学用的模拟程序,不是生产代码,也不是完整工程。 目的只有一个:把第 0 章里那些「听起来抽象」的结论,变成你能亲眼看到的数字 …
- 第 1 章配套代码索引 第 1 章配套代码索引 这些代码分两类:可以直接抄进项目的埋点骨架,和用来验证「为什么不能这么做」的实验。 目标是让你能回答「这个接口的 P99 里,数据库 …
- 第 2 章配套代码索引 第 2 章配套代码索引 这一章的代码分两类:验证机制的实验(让你亲眼看到 JIT/GC/协程的行为)和可直接抄用的配置(JMH 骨架)。 它们运行在你的开发 …
- 第 3 章配套代码索引 第 3 章配套代码索引 这一章的代码开始真的搭环境(Testcontainers、Docker、k6)。从这章起,你的数据开始具备可迁移性。 一、文件清单 …
- 第 4 章配套代码索引 第 4 章配套代码索引 这一章的代码大多是命令与配置,而不是业务代码——因为工具链的价值在于「会采、会看」。 凡是前三章已经给过的(Micrometer 四 …
- 第 5 章配套代码索引 第 5 章配套代码索引 这一章的代码以统计工具与实验编排为主——它们不测性能,而是判断性能结论是否可信。 一、文件清单 文件 对应小节 内容 …
- 第 6 章配套代码索引 第 6 章配套代码索引 这一章的代码是分析工具——它们不产生数据,而是帮你从数据里得出结论。 一、文件清单 文件 对应小节 内容 …
- 第 7 章配套代码索引 第 7 章配套代码索引 这一章的代码分两类:优化实现的正例(可直接抄用),和验证工具(判断优化是否真的有效)。 一、文件清单 文件 对应小节 内容 …
- 第 8 章配套代码索引 第 8 章配套代码索引 这一章的代码是机制,不是分析——它们会在你不看着的时候自动运行。 一、文件清单 文件 对应小节 内容 01-why-gates.md …
- 第 9 章配套代码索引 第 9 章配套代码索引 这一章的代码是编排脚本 + 模板——具体的技术实现(火焰图、门禁、统计工具)都在前八章的 code/ 目录里。 一、文件清单 文件 …