最近半年处理过的故障比较多,在这里简单的总结一下。
优先考虑限流、回滚和重启
优先看流量是不是比平时多了很多,如果是马上在网关上限流,赶紧扩容。
如果流量没有激增,那么就有下面这两种情况:
如果是当天晚上发版,验证完毕了,隔天出了问题,则立刻回滚代码,不要犹豫,绝大部分情况下是新上线的代码导致的问题。如果能清楚知道,是哪个服务出了问题,且分析完上下游依赖,那么可以只回滚一部分应用,如果没把握,则需要回滚所有的服务,如果新代码还提供了新接口给到小程序端,则小程序端也需要回滚。
如果服务运行了一段时间了,突然有问题,则优先重启服务。因为在这种情况下,大部分都是因为代码质量问题,导致系统资源逐渐被耗尽了,例如http连接。然后赶紧扩容应用,应付一段时间,然后线下去优化代码后再上线即可。
注意,上面的方案,是压根不会花时间去找到故障根因所在,而是基于以往经验,总结出来的快速处理方式,想的是如何用最快速度止血。
可能有人会问,就这么简单?我只能说,最近半年出现的很多大故障,我都是这么处理的,基本上10分钟内故障就解除了。当然,对于那种第三方依赖出了问题的,例如云数据库,第三方业务服务,基本上就只能硬扛,赶紧定位出问题,快速上线解决或者让对方快速上线,别无他法。