故障定级与响应SOP:如何定义P0/P1/P2故障

说实话,我见过太多团队在故障面前手忙脚乱的样子。有一次凌晨三点,线上服务挂了,值班同学不知道该不该打电话叫醒我——结果犹豫了半小时,用户已经骂翻天了。从那以后,我下定决心,必须把故障定级和响应流程做成铁打的规矩。

今天咱们就聊聊这个。故障定级不是搞形式主义,它是你救火时的第一张地图。

一、P0/P1/P2故障怎么定义?

我个人习惯用「影响面」和「紧急度」两个维度来切。说白了,就是看多少人用不了,以及能不能等。

级别 定义 典型场景 响应时间
P0 核心业务完全不可用,或资损正在发生 支付接口挂了、数据库主库宕机、用户无法登录 立即响应,5分钟内拉起应急群
P1 核心功能严重受损,但还有变通方案 某个核心API超时率超过50%、首页加载慢10秒 15分钟内响应
P2 非核心功能异常,或影响较小 某个后台报表打不开、非核心页面样式错乱 2小时内响应

关键判断标准:如果故障导致公司每分钟都在亏钱,那就是P0。我在项目中遇到过,一个配置错误导致线上计费少收了三个小时,算下来损失六位数——从那以后,资损类故障一律按P0处理。

二、故障响应流程与升级机制

流程这东西,平时觉得烦,出事才知道香。我建议你记住一个原则:先恢复,后排查。别在火场里研究起火原因,先灭火再说。

标准响应流程(5步法)

  1. 发现与通报——监控告警或用户反馈触发,值班同学确认后立即在应急群通报
  2. 定级与拉群——按上述标准定级,P0/P1必须拉专用应急群,@相关责任人
  3. 止损操作——执行三板斧(下面细说),目标是让服务先恢复
  4. 根因排查——止损后,再慢慢查为什么出问题
  5. 复盘与改进——出事后72小时内出复盘报告,定改进项

我的小技巧:应急群命名统一用「【P0】2024-01-15 支付接口超时」,方便事后检索。我曾经因为群名乱写,复盘时找了半天聊天记录,太耽误事了。

升级机制

升级不是甩锅,是资源调度。你想想看,一线同学搞不定的时候,不升级就是在浪费所有人的时间。

  • 一级升级(15分钟):值班同学无法定位,升级到SRE小组长
  • 二级升级(30分钟):小组长搞不定,升级到SRE负责人+相关业务owner
  • 三级升级(1小时):涉及跨团队协调,升级到CTO/技术VP

注意:升级不是等时间到了才做。如果你发现5分钟了还一头雾水,别犹豫,直接升级。我见过太多人死扛,结果把P1拖成了P0。

三、故障止损三板斧

这三板斧是我这些年总结出来的救命招。不管什么故障,先试这三招,大概率能稳住局面。

第一板斧:重启与回滚

别笑,重启真的能解决80%的问题。我遇到过内存泄漏、连接池耗尽、死锁……重启大法屡试不爽。

# 快速回滚脚本示例
kubectl rollout undo deployment/your-service -n production
# 或者回滚到指定版本
kubectl rollout undo deployment/your-service --to-revision=3 -n production

经验之谈:回滚前先确认数据库schema没变。我吃过一次亏,回滚了代码但数据库已经加了字段,结果服务直接起不来。所以,回滚前看一眼DB变更记录。

第二板斧:降级与限流

如果重启不管用,那就考虑降级。说白了,就是砍掉非核心功能,保住核心链路。

  • 降级策略:关闭推荐算法、关闭个性化推送、关闭日志采集
  • 限流策略:对核心接口做限流,保证部分用户能用,而不是谁都进不来
# Nginx限流配置示例
limit_req_zone $binary_remote_addr zone=mylimit:10m rate=100r/s;
location /api/order {
    limit_req zone=mylimit burst=20 nodelay;
    proxy_pass http://backend;
}

第三板斧:切流与容灾

这是最后的大招。如果单机房扛不住了,直接切到备用机房。如果某个服务挂了,用静态页或缓存顶上。

我的建议:平时就要演练切流。我见过一个团队,容灾方案写得漂漂亮亮,真到切的时候发现DNS缓存没清、备用库数据不同步……嗯,演练才是真功夫。

四、避坑指南

最后分享几个我踩过的坑,你遇到了能绕就绕。

  • 别在故障中改代码——你越急越容易写bug,先止损再修复
  • 别一个人扛——拉群、喊人、同步信息,团队作战效率高得多
  • 别忘记通知用户——发个公告、挂个维护页面,用户能理解,最怕的是无声无息

我曾经有一次,自己闷头修了俩小时,结果同事都不知道出事了。后来老板问我为什么不叫人,我说「我以为自己能搞定」——现在想想,真傻。故障面前,面子最不值钱。

好了,这一章就聊到这儿。记住:定级要准、响应要快、止损要狠。下一章咱们聊聊监控告警体系怎么搭,让你在故障发生前就能嗅到味道。