面试知识库
进阶

线上问题排查经验#

一句话答案#

排查标准流程:止血(降级/限流/回滚)→保留现场(dump/日志)→定位根因→修复→复盘改进。

核心要点

排查流程: 止血(降级/限流/回滚) → 保留现场(dump/日志) → 定位 → 修复 → 复盘

问题工具典型根因
CPU 100%top+jstack死循环/正则回溯
内存持续涨jmap+MATThreadLocal泄漏
接口超时Arthas慢SQL/第三方超时
面试回答(2分钟版)

线上问题排查我遵循”止血-保现场-定位-修复-复盘”五步流程。第一步一定是止血而不是查原因,根据情况选择降级、限流或回滚,先把影响范围控制住;第二步在止血的同时保留现场,执行jstack导线程栈、jmap dump堆内存、保存GC日志和业务日志,这些现场数据一旦服务重启就丢了;第三步根据现象选择工具定位根因,CPU飙高用top加jstack看是不是死循环或正则回溯,内存持续增长用jmap加MAT分析是否有内存泄漏比如ThreadLocal没清理,接口超时用Arthas的trace追踪是慢SQL还是下游服务超时;第四步是修复上线,改完要有灰度验证;第五步是复盘,这步面试官特别看重——要分析根因是什么、为什么监控没有提前发现、怎么防止再犯,输出改进项比如补充告警规则、加强代码审查、完善预案。面试时说”从来没出过线上问题”反而不可信,关键是展示你有系统化的排查能力和持续改进的意识。

追问与易错

追问方向:

  • “怎么保留现场?”→ 第一时间执行:jstack 导出线程栈、jmap -dump 导出堆内存快照、保存 GC 日志和业务日志、截图监控 Dashboard;这些数据服务重启后就丢了,必须在止血前或同时保留
  • “止血和修复优先级?”→ 永远止血优先——先降级/限流/回滚把影响控制住,再慢慢排查根因修复;在故障现场犹豫”要不要回滚”是最大的错误,15 分钟内有变更就先滚再查
  • “复盘会怎么开?”→ 按「时间线→根因→影响范围→处置过程→改进项」五部分展开;重点讨论为什么监控没提前发现、怎么防止再犯,产出具体 Action Item(补告警/加预案/改流程)并跟踪落地

易错点:

  • ❌ 从来没出过线上问题——不可信
  • ❌ 只说问题不说改进