首次归档:2026-09-11 R2 | 难度:进阶
场景:
周五下午 3 点,监控告警——核心下单接口 P99 从 150ms 飙到 2s,QPS 不变,CPU 从 30% → 85%,Young GC 从 1 次/分钟 → 5 次/分钟。
问题:
- 先检查计划任务/外部压力 → 检查线上对象情况 → 看日志 → 排查线上对象创建 - 工具:Arthas、jstack、jmap - 判断逻辑:突然的问题一般是代码问题,不是 GC 参数问题 - 修复:对象栈化处理
优点:
不足:
得分:6/10
第1步: 看监控 → 确认CPU和GC指标 → 看GC日志(pause time、heap usage变化)
第2步: 用Arthas的 thread -n 5 或 jstack 看线程阻塞情况
第3步: 看最近代码变更(git log、release记录)
第4步: 用Arthas的 profiler 或 async-profiler 看热点方法
| 维度 | 代码问题 | GC参数问题 |
|---|---|---|
| 发生时机 | 突然发生,通常伴随代码变更 | 渐进式恶化 |
| GC日志 | Young GC 频率突增,Eden区频繁填满 | Old区占用持续上升,Mixed GC 变多 |
| 排查方法 | 看最近上线代码、profiler热点 | 看-Xmx、-Xmn配置、Metaspace使用率 |
| 工具 | Arthas profiler、jstack、async-profiler | jstat -gcutil、jmap -heap |