前言
说起线上故障,程序员应该都经历过,从故障处理恢复过程中我们能快速提高。踩坑多了,慢慢也就成了大牛。这道题也是大厂的面试官们特别喜欢问的问题之一,从候选人对这道题的回答过程中,面试官至少能获取到两个方面的反馈。第一是你平时负责的项目是不是核心项目,如果你说你负责的是后管系统,出了问题重启就OK了,那结果只能是出门右转了。第二是候选人系统化处理问题的能力。你是如何快速止血;如何一步步快速定位到具体问题;故障前的准备工作是否充分,风险点有没有紧急应对方案。
下面我们就一起来聊聊线上故障的排查过程
快速止血
在分布式系统环境中,最重要的就是快速止血。在互联网公司呆过的同学知道,恐怖的复盘大会往往第一个问题就是为什么故障花了半个小时,业务都投诉了才知道。或者是为什么花了15分钟才知道是慢SQL问题,被按在地上摩擦的不要不要的。
原因是在分布式系统中,故障很容易产生“多米诺骨牌效应”。比如一个基建服务因为一个慢sql导致请求响应变慢,就会导致上游的请求堆积,线程无法释放,进而导致上线的系统也变的很慢,出现大量error。这个雪崩过程有时候很快,到时候测试,运维,上游系统的负责人在各种电话,信息轰炸你的时候,这时候的你肯定是
怎么办?如果问题定位了很长时间还没定位到,那就只能先用杀手锏了:
-
重启 系统不可用时先重启,先保证系统的可