现场快照类型与采集时机

线上故障发生时,采集哪种快照、何时采集、如何采集,直接决定了问题能否被快速定位。本章围绕七种核心现场快照——堆转储(Heap Dump)、线程转储(Thread Dump)、内存快照、CPU Profile、GC日志、系统日志、网络抓包——按照“现象识别 → 数据采集 → 原因定位 → 修复动作 → 复测 → 预防”的主线,建立一套可复用的快照采集决策体系。


3.1 现象识别:匹配快照与故障场景

不同故障现象对应不同的快照类型。下表归纳了7种常见线上异常与推荐快照的对应关系,以及采集的优先级。

故障现象 推荐快照类型 优先级 典型表现
内存溢出(OOM)、堆使用率持续高位 Heap Dump、Memory Snapshot P0 java.lang.OutOfMemoryError、GC overhead limit exceeded
线程死锁、线程挂起、线程数飙升 Thread Dump P0 应用无响应、http 503、线程BLOCKED状态堆积
CPU 使用率持续飙高(>90%) CPU Profile、Thread Dump P0 top 显示进程CPU高、请求响应变慢
频繁 Full GC / STW 时间过长 GC Log、Heap Dump P1 监控告警 GC 暂停 >1s、吞吐量下降
系统异常、OOM Killer、进程被 kill System Log(dmesg、syslog) P1 进程突然消失、dmesg 显示 oom_killer
网络超时、丢包、连接异常 网络抓包(Packet Capture) P1 timeout、connection reset、retransmission 上升
内存泄漏怀疑、堆外内存异常 Memory Snapshot、Heap Dump P2 内存趋势持续上升、堆外内存使用异常
采集时机铁律:Heap Dump 必须在 OOM 发生之后 立即采集,不要等待;Thread Dump 需要在 问题持续期间 连续采集 3-5 次(间隔 10s);网络抓包要 提前启动 循环抓取,保留最近 1 小时的滚动文件。

下面是一张 现场快照采集决策树,帮助你在故障发生时快速判断应该采集哪种快照:

现场快照采集决策树 线上异常现象 内存 / 堆问题 线程 / CPU 问题 GC / 系统 / 网络问题 Heap Dump Memory Snapshot Thread Dump CPU Profile GC Log System Log Network Packet ⏱ OOM / 堆满时采集 ← 上一章 📖 返回目录 下一章 →