百万级 QPS 生产发布 发生的一次P0级故障

52 阅读1分钟

系统 日常 请求量 QPS 30万 - 40 万 三十个实例 ,每个实例 8C16G, cpu 日常 占用是 40%,内存占用 60%

一个同事上线一个小功能,涉及到修改缓存 redis , 需要将 之前 缓存的 大 key 全部清除掉

开发完,测试也没问题,就开始 上线

先灰度了2个实例,发现有点儿小问题,就回滚

改完后,又上线,几分钟内,发现没问题了,就开始 全量发布

服务刚起来,没多久,告警就来了,实例有问题

于是查看服务 日志 ,显示 是 redis 集群问题

联系redis 维护团队

排查是不是 redis 集群出问题了

又 联系 数据库 团队,排查 数据库有没有出问题

因为这次删除了大key , 怀疑是 这里导致的

赶紧将发布回滚,因为刚才已经全量发布了,一下子全部30个实例全部回滚重起

这个时候,可怕的事情发生了,30个实例,在不断重启,刚起来 就 全部 被 kill 掉

大家都很着急,都在排查中。。。

过了一会儿,客户端团队反馈过来信息,客户端流量涨了3倍

于是呢,先不管啥情况,既然请求量是 平时的 3倍,先把实例数扩充 3倍

实例扩充到 90个

这时候,服务顺利启动并运行

这时候半小时已经过去了

后续运行平稳,实例逐步缩容到 30个

复盘: 大流量系统,服务全部重启时,流量在路上堵着,所以翻3倍,甚至更多,和timeout时间有关。