工作突发状况怎么处理?别再喊冷静了,先搭一个30分钟可恢复系统
我经历过最狼狈的一次突发,是去年双十一前夜。凌晨1:47,电商后台订单曲线还像心电图往上冲,突然从每分钟120单掉到9单。客服排队从20人冲到430人,群里有人@全体成员,有人发“谁改了什么”,还有人直接打电话给老板。那一刻没人不冷静,问题也不是冷静能解决的。
后来我们用了37分钟恢复,但我记住的不是“某个人反应快”,而是三个数字:1个改配置的人、0个回滚按钮、7个没有负责人的环节。几乎所有工作突发状况都不是“突然发生”,而是平时把风险藏在了三个地方:单点依赖、口头流程、没有熔断。下面这套方法,是我从那之后一直在用的,不保证优雅,但能让你少在群里吵20分钟。
先对比:救火英雄 vs 可恢复系统
大部分团队处理突发状况,走的是“救火英雄”路线:谁嗓门大谁指挥,谁离问题近谁背锅,谁加班狠谁被表扬。它的好处是短期快,坏处是每次都在赌运气。下一次换个人、换个时间、换个系统,照样炸。
另一种路线是“可恢复系统”。它不追求永不犯错,而是承认一定会出错,然后提前设计好:出错后5分钟能止血,15分钟能定位,30分钟能决定继续修还是回滚,60分钟能写出一页纸复盘。两者最大区别不是工具,而是问题归属:救火英雄问“谁干的”,可恢复系统问“哪个环节没有兜底”。
我做过一个很笨但有效的对比表。左边写“人治应急”:靠群公告、靠老板拍板、靠老员工记忆。右边写“系统应急”:靠值班表、靠检查清单、靠回滚脚本、靠降级开关。每季度挑一个最可能出事的流程,强制按右边跑一次。跑完你会发现,很多“突发”其实有固定剧本:数据库连接数爆了、活动配置写错、关键人请假、客户临时改需求。
0-5分钟:先止血,别急着找凶手
突发状况最怕的不是问题大,而是信息乱。0-5分钟只做三件事,其他都忍住。第一,指定一个“现场负责人”,不一定是领导,但必须能拍板。第二,拉一个临时群或会议,人数不超过7个,超过就会变成辩论赛。第三,写清楚三行:现象是什么、影响谁、从几点开始。
这三行看着简单,但能砍掉一半无效沟通。比如“订单掉了”不算现象,“支付回调成功率从99.2%跌到61%,从01:47开始,影响安卓端下单”才算。影响面也要具体:是全部用户还是5%用户,是只影响新客还是复购也受影响,是收入损失还是口碑损失。没有这三行,后面所有讨论都是猜。
止血手段无非四种:回滚、降级、限流、切备用。别瞧不起“先关掉一个功能”。去年我们有次推荐服务拖垮首页,最后不是修好推荐,而是把推荐模块降级成静态榜单,首页3分钟恢复。用户没觉得少了什么,收入也没掉。突发状况里,可用比完美重要,能恢复比能解释重要。
5-15分钟:用影响面决定方案,不用情绪决定
5-15分钟要回答一个问题:继续修,还是先回滚?我的判断标准很土:如果修复时间预计超过30分钟,且影响核心链路,先回滚。如果影响面小于10%用户,且不涉及支付、登录、数据丢失,可以一边修一边观察。别在群里争论“是不是代码问题”,先看最近30分钟有哪些变更:发版、配置、SQL、第三方接口、域名证书。
这一步最需要的是“变更记录”。很多团队没有,只能靠回忆。我们后来强制要求:任何线上变更,必须在同一个频道里写三行:改了什么、影响范围、回滚方式。别写“优化了一下”,要写“把订单查询缓存从60秒改成300秒,影响订单列表,回滚命令是xxx”。这三行平时看着烦,出事时能救命。
还有一个反常识观点:不要让最高领导直接进战情室指挥。领导适合在15分钟节点听一次汇报,然后决定资源投入,比如要不要叫醒第三方、要不要发公告、要不要停投放。直接指挥会制造“沉默成本”:老板都说是代码问题了,谁还敢提回滚?现场负责人必须和技术判断分开,否则没人敢说“先别修了”。
15-30分钟:做熔断和降级,不做完美修复
15-30分钟,核心是控制爆炸半径。我会强制问四个问题:最坏会损失多少钱?会不会丢数据?会不会影响监管或大客户?有没有临时替代路径?这四个问题比“根本原因是什么”更紧急。根本原因可以明天再查,但数据丢了、客户跑了,明天补不回来。
具体动作可以拆成清单:1)关掉非核心功能,比如弹窗、推荐、积分任务;2)把流量切到备用节点或静态页;3)把第三方依赖设超时,别让它拖死主流程;4)给客服发一段统一话术,别让他们自由发挥;5)如果预计超过1小时,发公告,但只写事实和下一次更新时间。
我见过最亏的一次,是团队花2小时查一个缓存穿透,期间首页一直白屏。后来发现只要加一个默认值就能先恢复,但没人敢改,因为“不确定会不会有副作用”。这暴露的不是技术能力,而是决策机制:没人被授权做降级。所以我现在会提前写好“降级授权线”:影响支付超过5分钟,值班负责人可以直接降级,不用等总监。事后复盘,不追责,只补流程。
30-60分钟:复盘不是写检讨,是改系统
30-60分钟,问题恢复后别急着散会。复盘只写四块:时间线、影响面、根因、行动项。时间线精确到分钟,比如01:47报警,01:52拉群,01:58回滚,02:24恢复。影响面写清楚:多少用户、多少订单、多少钱、多少客服工单。根因别写“粗心”,要写“配置变更没有灰度,直接全量”。
行动项必须满足三个条件:有负责人、有截止时间、有验证方式。比如“6月20日前,订单缓存配置接入灰度发布,验证方式是新配置先放1%流量观察10分钟”。没有这三样,复盘就是作文。我们团队还加了一条:每个行动项只能有一个负责人,不能写“大家一起”。大家一起,就是没人负责。
最后说个独立观点:工作突发状况处理得好不好,不看你多快修好,而看你多快恢复“可预期”。真正让人崩溃的不是故障本身,是不知道接下来会发生什么。所以从今天开始,你可以先做一件小事:挑你最怕出事的那个流程,写出三行——现象、影响、回滚方式。写上10分钟,可能比下次在群里刷100条“收到”更有用。