核心宗旨:先止血、再恢复、后复盘。线上故障第一优先级是恢复业务,不是查根因、不是改代码。
完整闭环:发现 → 定级 → 通报 → 止血恢复 → 根因定位 → 修复上线 → 数据补全 → 复盘整改
一、故障发现(被动+主动)
两类发现渠道:
-
被动发现:用户反馈、客服上报、业务侧报错、接口超时、页面异常
-
主动发现:监控告警(CPU/GC/接口成功率/报错率)、链路追踪告警、日志异常告警、拨测告警
关键动作:第一时间确认是否真实故障、影响范围、是否正在扩散。
二、故障定级(公司通用标准|必背)
按影响用户数、业务范围、持续时间定级,统一处理优先级:
-
P0 特级故障:核心业务全挂、全站不可用、大量用户受损、资损严重
-
P1 严重故障:核心业务降级、部分功能不可用、大量用户受影响
-
P2 一般故障:非核心功能异常、少量用户影响,主流程正常
-
P3 轻微故障:日志报错、偶发异常,无用户感知
定级决定:响应速度、是否拉紧急群、是否升级领导、是否停迭代。
三、故障通报(同步信息,避免多头排查)
故障初期信息同步,避免多人重复排查、混乱无序:
-
拉紧急故障群:研发、测试、运维、产品、客服
-
同步:故障现象、开始时间、影响范围、当前处理人
-
禁止沉默排查:任何进展、卡点、猜测必须实时同步
四、核心步骤:先止血、后恢复(重中之重|面试高频)
线上铁律:恢复业务优先,不追求当场定位根因。
常用止血恢复手段(按优先级排序):
-
紧急降级:关闭非核心功能、限流、熔断,保住主流程
-
流量切换:读写分离切主、切备用集群、异地多活切换
-
节点摘除:下线故障节点、异常实例,避免持续报错
-
版本回滚:最新迭代代码导致故障,优先回滚上一个稳定版本(最快止血)
-
重启恢复:内存泄漏、死锁、线程耗尽,快速重启实例兜底
-
临时兜底方案:缓存兜底、静态页兜底、默认值兜底
止血标准:接口成功率恢复、报错率归0、用户感知消失。
五、根因定位(业务恢复后开展)
业务恢复稳定后,再深入排查真实原因,避免故障复现。
排查维度全覆盖:
-
应用层:死锁、OOM、频繁FullGC、线程池耗尽、代码bug、空指针、循环逻辑
-
数据库层:慢SQL、索引失效、行锁等待、连接池打满、主从延迟
-
中间件层:Redis大key/热key、MQ堆积、ZK抖动、Nginx异常
-
资源层:CPU飙高、内存溢出、磁盘满、网络丢包、带宽打满
-
变更层:代码上线、配置变更、机器扩容、权限变更、依赖升级
定位方法:监控大盘 + 链路追踪 + 日志检索 + 线程栈/堆dump分析 + 变更记录比对。
六、彻底修复 & 灰度上线
-
修复代码bug、配置错误、资源瓶颈、架构缺陷
-
禁止直接全量发布:先灰度、小流量验证、观察监控
-
验证回归:功能回归、性能回归、并发回归,确认无二次问题
七、数据兜底 & 损失修复
故障若导致数据异常、丢失、重复、资损:
-
核对日志、数据库、MQ消息,校准脏数据
-
补单、对账、回补数据、补偿业务状态
-
统计资损范围、用户影响,做好用户安抚
八、故障复盘(闭环关键|面试必考)
故障恢复后,必须复盘,杜绝重复踩坑,采用 5Why分析法 深挖根因。
复盘报告核心内容
-
故障基本信息:时间、现象、定级、影响范围、持续时长
-
故障过程:发现、通报、止血、恢复、定位完整时间线
-
直接原因:表面问题(如新增SQL无索引、代码死循环)
-
根本原因:流程/规范/架构漏洞(如上线无灰度、无SQL审核、无压测)
-
改进方案:代码、流程、监控、架构四层整改
-
责任人、整改截止时间、验收标准
三类整改措施(必背)
-
短期止血:临时修复、配置优化、降级限流兜底
-
中期优化:代码重构、SQL优化、资源扩容、补齐监控
-
长期规范:完善上线流程、CR规范、压测规范、告警体系
九、线上故障三大铁律(面试绝杀句)
-
恢复大于一切:先止血恢复业务,再查根因,绝不原地死磕排查
-
所有故障必须复盘:无复盘不结束,无改进不闭环
-
故障可预防、可兜底、可快速恢复,杜绝低级重复故障
十、高频面试深挖问答
Q1:线上故障为什么优先回滚,而不是现场修复?
回滚是最快、最安全的止血方式,能立刻恢复业务;现场修复耗时久、不确定性高,容易引入二次bug,扩大故障影响。
Q2:故障处理最大的禁忌是什么?
沉默排查、盲目改代码、不通报、不降级、不回滚、耗时死磕根因,导致故障持续扩散。
Q3:怎么避免同类故障重复发生?
通过复盘找到流程漏洞,补齐监控告警、完善CR审核、上线灰度、压测覆盖、增加兜底降级策略,固化规范流程。
Q4:偶发难复现故障怎么处理?
优先加详细日志、链路埋点、监控指标,缩小排查范围;增加兜底容错逻辑,先保业务稳定,等待故障复现定位根因。
一句话终极背诵总结
线上故障遵循先止血恢复、后定位根因、最终复盘闭环;优先降级、限流、回滚、节点切换快速保业务,通过监控日志定位问题,修复后补齐数据损失,复盘深挖根本漏洞,从代码、监控、流程、架构四层优化,杜绝重复故障。