阅读历史 |

第7章 故障与复盘(1 / 2)

加入书签

请关闭浏览器的阅读/畅读/小说模式并且关闭广告屏蔽过滤功能,避免出现内容无法显示或者段落错乱。

周五下午,吉彤正在调试一个动画性能优化,企业微信群里突然弹出孙姐的一条消息,语气比平时急了几分:“登录模块线上出现了大量超时报错,谁在关注?”

吉彤刷新了一下自己的测试环境,没有异常。他切到生产环境的监控面板,红色的报错曲线从十四点二十分开始陡然攀升,到此刻已经翻了三倍。报错类型集中在验证码接口的超时——用户提交手机号之后,等待验证码的时间超过了预设的十秒阈值,前端自动触发了重试,但重试的失败率也高得异常。

“我刚看了日志,”沈瑶的声音从工位那头传过来,“华信那边今天下午做了一个网关迁移,可能改了验证码服务的路由策略。咱们这边的请求被重新路由到了一个新的实例,但那个实例的限流配置跟之前不一样。”

吉彤翻出之前跟华信联调时整理的接口配置表,迅速比对了一下。他发现在网关迁移之后,原本每分钟三次的限流降到了每分钟一次,再加上午后使用高峰期涌入的请求,新的实例被瞬间打满,大量请求在队列中排队超时。

“孙姐,我查到了,”吉彤快速打字,“限流阈值被改回去了,降到了每分钟一次。请求高峰叠加上超时重试的放大效应,现在的失败率在35%左右。”

孙姐在群里回了一句:“吉彤联系华信那边确认限流配置,沈瑶准备前端降级方案,如果五分钟内恢复不了,我们把验证码入口暂时切换成短信下发提示,先止血。”

吉彤拨通了小张的电话。响了一声就被接起来,小张的声音明显有些紧绷:“我知道了,网关迁移的时候配置没同步,我正在回滚限流参数。”

“回滚大概多久生效?”

“三到五分钟。我先把阈值提到每分钟五次,给咱们留足缓冲。”

“好。前端这边我会做两件事——第一,重试间隔从两秒调整到三秒,避免重试风暴;第二,如果连续两次重试失败,不再自动重试,而是显示一个手工触发的‘重新获取’按钮,让用户自己决定要不要再次请求,这样能把请求量控制在合理范围。”

小张沉默了一瞬:“你这方案反应真快。我先改配置,咱们十五分钟后同步状态。”

吉彤挂掉电话,迅速改了两行代码参数,把热修复通过公司的发布系统推到了生产环境。他盯着监控面板上的曲线,等待数据回传。第一分钟,报错曲线还在攀升;第二分钟,攀升的斜率放缓了;第三分钟,曲线开始掉头向下。

沈瑶走到他工位旁边看着屏幕:“华信那边回滚了吗?”

“正在回滚。我把重试逻辑调了,先压一压流量。”

两个人盯着监控面板没有说话。时间一分一秒过去,红色的曲线终于在第五分钟时断崖式下坠,回归到了正常的绿色区间。吉彤刷新了一下页面,验证码发送的成功率重新回到了98%以上。

孙姐在群里发了条消息:“恢复了。吉彤、沈瑶、赵宇,下周一上午十点,复盘会。”

吉彤靠回椅背,长长呼出一口气。他低头看了看时间,从报错出现到问题解决,前后一共二十三分钟。

如果是以前的公司,他想,二十三分钟可能连谁该负责都还没吵完。

赵宇从工位那边探过身子:“卧槽,刚才那二十分钟我心跳都加速了。你那个降级方案写得够快的。”

“之前联调的时候踩过限流的坑,心里有数。”

“华信那边怎么说?是他们的问题吗?”

“网关迁移配置没同步。”吉彤关上监控面板,“小张已经在改了。”

赵宇靠回椅子上,嘴里“啧啧”了两声:“要在以前公司,这会儿群里应该已经开始骂华信了。骂完华信骂网关负责人,骂完网关负责人骂测试没测全,反正不骂到有人摔键盘不罢休。”

吉彤没有反驳。他想起在恒远科技经历过一次类似的事故——第三方支付接口升级导致订单系统崩溃了四十分钟,技术群里从“谁负责的”开始,一路滑向“某某上次就说过这地方有问题你们为什么不听”,最后运维和开发在会议室里吵了整整一个下午,直到晚上十点才有人想起来先把系统修好。后来那次的复盘会也开了,但更像是划分责任界面的谈判会,每人轮流念自己提交的免责说明。

而刚才的二十三分钟里,群里最激烈的词是“止血”。没有人问“谁的责任”,所有人都在问“怎么解决”。吉彤意识到这一点的时候,觉得这个认知像一枚硬币的正面,清晰得几乎刺眼。

周一上午十点,小会议室。

吉彤到的时候,孙姐已经坐在长桌一头了,面前摊着一份打印好的时间线。沈瑶坐在孙姐右手边,赵宇坐在吉彤旁边,手里转着一支笔。会议桌上放了一壶温水,旁边摆着几个一次性纸杯,跟平常的例会差不多,氛围不像要追责的样子。

“咱们快速过一下周五的事。”孙姐在桌面上点了点那份时间线,“吉彤先把过程从头捋一遍。”

吉彤打开自己周末整理的记录,开始叙述。从十四点二十分监控触发告警,到十四点二十三分确认问题根因,到十四点二十五分联系华信,到十四点三十分前端降级方案上线,到十四点四十三分华信配置回滚完成、系统完全恢复。他把每个时间节点后面对应的决策依据也说了——为什么调整重试间隔,为什么把自动重试改成手动触发,为什么没有直接关闭验证码入口而是保留了手工按钮。

“主要原因是华信网关迁移后限流配置回退,加上前端重试机制放大了请求压力。目前的处理结果是,华信那边已经将限流阈值统一调整,并且把所有环境的生产配置做了版本化管理,以后不会再出现迁移后配置自动回退的情况。”吉彤说完合上了笔记本。

孙姐点了点头:“华信那边沟通的情况呢?”

“小张周五下午就改了,还额外在配置中心加了一道审批流程,任何限流参数变更需要有两个人确认才会生效。”

沈瑶补充了一句:“周五当天下午,华信的王总也给我发了消息,说已经内部通报了这次事故,网关迁移方案下次会提前跟我们同步。”

孙姐没有追问任何一个人的“失误”,也没有要任何人表态“下次保证不出错”。她只是拿起笔在时间线那张纸上画了几个圈:“华信那边的变更通知机制是断裂点。以后所有外部合作方的生产环境变更,都要提前至少一个工作日同步到咱们的项目群里。吉彤,你回头建一个外部变更同步的规范模板,发我审一下。”

“好。”

“另外,这次前端降级方案响应速度很好。吉彤能在五分钟内拿出热修方案,说明对系统的熟悉程度到位了。”孙姐看了一眼吉彤,又看向赵宇,“赵宇,你这次虽然没有直接参与修复,但监控告警是你配置的?第一时间触发报警的就是你那天设的阈值,提前发现了问题。”

赵宇愣了愣:“呃,那个监控是我上周顺手配的。”

“配得很好。现在说说这次的事有哪些可以优化,从技术层面复盘,不针对人。”

↑返回顶部↑

书页/目录