第 4 章配套代码索引
这一章的代码大多是命令与配置,而不是业务代码——因为工具链的价值在于「会采、会看」。 凡是前三章已经给过的(Micrometer 四层埋点、k6 三种负载曲线、Prometheus Compose),这里不重复,只给索引指路。
一、文件清单
| 文件 | 对应小节 | 内容 |
|---|---|---|
| 01-load-generators.md | 4.1 负载生成器 | k6 进阶用法 + 压测机自查脚本 |
| 03-async-profiler.md | 4.3 async-profiler | 四类事件命令全集 + 火焰图解读 + diff |
| 04-jfr-and-jcmd.md | 4.4 JFR 与 jcmd | JFR 三种用法 + jcmd 应急 + jfr 命令行分析 |
| 05-system-observability.md | 4.5 系统级观测 | sys/steal/上下文切换 + IO + 网络观测脚本 |
| 06-app-observability.md | 4.6 应用可观测性 | OTel 追踪 + 日志异步化 + 基数控制 |
| 07-data-and-middleware.md | 4.7 数据与中间件观测 | PG 四视图 + 连接池判定 + Redis |
| 08-container-interference.md | 4.8 容器与编排的干扰 | 节流诊断 + JVM 内存对齐 + 环境一致性检查 |
| 09-lab4.md | 4.9 Lab 4 | Lab 4 编排与验收脚本 |
4.2(两类现象两条路径)没有独立代码——它的验证在 03(对比 cpu 与 wall 两张图)。
二、前三章已经给过的代码(不重复)
| 需要什么 | 去哪找 |
|---|---|
| Micrometer 四层指标埋点 | ch1 code 01 |
| 依赖级 Timer + 延迟分解 PromQL | ch1 code 03 |
| Prometheus + Grafana Compose | ch3 code 04(观测栈在 4.9 Lab) |
| k6 阶梯/恒定/尖峰脚本 | ch3 code 04 |
| 浸泡脚本 + 指标采样 | ch3 code 05 |
| 崩溃取证(jcmd 线程快照) | ch3 code 06 |
| 环境元数据采集 | ch1 code 07 |
三、需要安装的工具
| 工具 | 安装方式 | 用途 |
|---|---|---|
| async-profiler | 下载解压(GitHub releases) | 四类火焰图 |
| k6 | brew install k6 / 官方脚本 |
压测 |
| JFR | JDK 自带 | 常开剖析 |
| JDK Mission Control | jdk.java.net/jmc | 分析 JFR |
| Docker | — | 观测栈 |
可选:perf、bpftrace |
系统包管理 | 内核级观测 |
验证工具可用性:
asprof --version 2>/dev/null || echo "❌ 未安装 async-profiler"
k6 version 2>/dev/null || echo "❌ 未安装 k6"
jcmd -h > /dev/null 2>&1 && echo "✅ jcmd 可用"
jfr --version 2>/dev/null || echo "❌ jfr 命令不可用"
docker info > /dev/null 2>&1 && echo "✅ Docker 可用"
四、本章的核心验证目标
做完本章,你必须能回答这三个问题(它们是 Lab 4 的验收核心):
- 只采 CPU 火焰图会得出什么错误结论?(答案在 4.2 + Lab 4 任务 4)
- 怎么确认容器 CPU 节流?(答案在 4.8)
pending > 0意味着什么,接下来该做什么?(答案在 4.7)
这三个问题覆盖了本章 80% 的实用价值。 其余内容(系统观测、追踪、日志)是补充。