线上故障标准处理流程【完整版|面试背诵+生产落地】

核心宗旨:先止血、再恢复、后复盘。线上故障第一优先级是恢复业务,不是查根因、不是改代码。

完整闭环:发现 → 定级 → 通报 → 止血恢复 → 根因定位 → 修复上线 → 数据补全 → 复盘整改

一、故障发现(被动+主动)

两类发现渠道:

  • 被动发现:用户反馈、客服上报、业务侧报错、接口超时、页面异常

  • 主动发现:监控告警(CPU/GC/接口成功率/报错率)、链路追踪告警、日志异常告警、拨测告警

关键动作:第一时间确认是否真实故障、影响范围、是否正在扩散。

二、故障定级(公司通用标准|必背)

按影响用户数、业务范围、持续时间定级,统一处理优先级:

  • P0 特级故障:核心业务全挂、全站不可用、大量用户受损、资损严重

  • P1 严重故障:核心业务降级、部分功能不可用、大量用户受影响

  • P2 一般故障:非核心功能异常、少量用户影响,主流程正常

  • P3 轻微故障:日志报错、偶发异常,无用户感知

定级决定:响应速度、是否拉紧急群、是否升级领导、是否停迭代。

三、故障通报(同步信息,避免多头排查)

故障初期信息同步,避免多人重复排查、混乱无序:

  • 拉紧急故障群:研发、测试、运维、产品、客服

  • 同步:故障现象、开始时间、影响范围、当前处理人

  • 禁止沉默排查:任何进展、卡点、猜测必须实时同步

四、核心步骤:先止血、后恢复(重中之重|面试高频)

线上铁律:恢复业务优先,不追求当场定位根因。

常用止血恢复手段(按优先级排序):

  1. 紧急降级:关闭非核心功能、限流、熔断,保住主流程

  2. 流量切换:读写分离切主、切备用集群、异地多活切换

  3. 节点摘除:下线故障节点、异常实例,避免持续报错

  4. 版本回滚:最新迭代代码导致故障,优先回滚上一个稳定版本(最快止血)

  5. 重启恢复:内存泄漏、死锁、线程耗尽,快速重启实例兜底

  6. 临时兜底方案:缓存兜底、静态页兜底、默认值兜底

止血标准:接口成功率恢复、报错率归0、用户感知消失。

五、根因定位(业务恢复后开展)

业务恢复稳定后,再深入排查真实原因,避免故障复现。

排查维度全覆盖:

  • 应用层:死锁、OOM、频繁FullGC、线程池耗尽、代码bug、空指针、循环逻辑

  • 数据库层:慢SQL、索引失效、行锁等待、连接池打满、主从延迟

  • 中间件层:Redis大key/热key、MQ堆积、ZK抖动、Nginx异常

  • 资源层:CPU飙高、内存溢出、磁盘满、网络丢包、带宽打满

  • 变更层:代码上线、配置变更、机器扩容、权限变更、依赖升级

定位方法:监控大盘 + 链路追踪 + 日志检索 + 线程栈/堆dump分析 + 变更记录比对。

六、彻底修复 & 灰度上线

  • 修复代码bug、配置错误、资源瓶颈、架构缺陷

  • 禁止直接全量发布:先灰度、小流量验证、观察监控

  • 验证回归:功能回归、性能回归、并发回归,确认无二次问题

七、数据兜底 & 损失修复

故障若导致数据异常、丢失、重复、资损:

  • 核对日志、数据库、MQ消息,校准脏数据

  • 补单、对账、回补数据、补偿业务状态

  • 统计资损范围、用户影响,做好用户安抚

八、故障复盘(闭环关键|面试必考)

故障恢复后,必须复盘,杜绝重复踩坑,采用 5Why分析法 深挖根因。

复盘报告核心内容

  • 故障基本信息:时间、现象、定级、影响范围、持续时长

  • 故障过程:发现、通报、止血、恢复、定位完整时间线

  • 直接原因:表面问题(如新增SQL无索引、代码死循环)

  • 根本原因:流程/规范/架构漏洞(如上线无灰度、无SQL审核、无压测)

  • 改进方案:代码、流程、监控、架构四层整改

  • 责任人、整改截止时间、验收标准

三类整改措施(必背)

  • 短期止血:临时修复、配置优化、降级限流兜底

  • 中期优化:代码重构、SQL优化、资源扩容、补齐监控

  • 长期规范:完善上线流程、CR规范、压测规范、告警体系

九、线上故障三大铁律(面试绝杀句)

  1. 恢复大于一切:先止血恢复业务,再查根因,绝不原地死磕排查

  2. 所有故障必须复盘:无复盘不结束,无改进不闭环

  3. 故障可预防、可兜底、可快速恢复,杜绝低级重复故障

十、高频面试深挖问答

Q1:线上故障为什么优先回滚,而不是现场修复?

回滚是最快、最安全的止血方式,能立刻恢复业务;现场修复耗时久、不确定性高,容易引入二次bug,扩大故障影响。

Q2:故障处理最大的禁忌是什么?

沉默排查、盲目改代码、不通报、不降级、不回滚、耗时死磕根因,导致故障持续扩散。

Q3:怎么避免同类故障重复发生?

通过复盘找到流程漏洞,补齐监控告警、完善CR审核、上线灰度、压测覆盖、增加兜底降级策略,固化规范流程。

Q4:偶发难复现故障怎么处理?

优先加详细日志、链路埋点、监控指标,缩小排查范围;增加兜底容错逻辑,先保业务稳定,等待故障复现定位根因。

一句话终极背诵总结

线上故障遵循先止血恢复、后定位根因、最终复盘闭环;优先降级、限流、回滚、节点切换快速保业务,通过监控日志定位问题,修复后补齐数据损失,复盘深挖根本漏洞,从代码、监控、流程、架构四层优化,杜绝重复故障。

相关推荐
yuniko-n8 小时前
【JUC】volatile 非原子性深入解析
java
java_nnnn8 小时前
LeetCode刷题滑动窗口(串联所有单词的子串+最小覆盖的子串)Java
算法·leetcode·职场和发展
sun_weitao8 小时前
极简版 MCP 工具实现方案
java·linux·服务器
SailingCoder8 小时前
【封闭结束1】端到端交付:Agent 一次请求如何走完全链路
前端·安全·ai·面试·agent·harness
Interview Aid1129 小时前
Uber Interview Process 完整指南:面试流程、OA 真题与 VO 备考
面试·职场和发展
金銀銅鐵9 小时前
[Java] 展示增删元素时 LinkedList 的内部变化
java·后端·ai编程
布吉岛的石头10 小时前
Java 程序员第 50 阶段3:数据工程:预训练语料清洗与去重
java·开发语言·人工智能·深度学习·transformer
大文说跨境10 小时前
防关联浏览器的指纹覆盖到什么程度:六类参数的实测与自检方法
java·指纹浏览器·tiktok运营
Carol063010 小时前
上肢及肩肘关节
java·服务器·数据库
yliucherish11 小时前
Log4Shell 复现实录:我读 OpenJDK 源码,发现两道防线的默认值竟然相反
java