[TOC]
# 1.故障处理原则
故障处理的原则只有两个:
1. 以恢复业务优先
2. 及时升级
# 2 恢复业务优先
## 2.1 从服务端来看运维故障处理方法
如果从服务端来看,运维恢复业务最重要的三个方法是:**重启,隔离和降级。**
**重启**:重启包括服务重启和服务器重启(os重启)两种,在发生故障中,任何中涉及到的环节,都可以重启来完成,重启的一般顺序是,故障对象>故障对象上游>故障对象下游,一般离故障对象越远,重启顺序越靠后。
**隔离**:隔离是指对故障的对象从集群中抽离的过程,目的是让故障对象不再提供服务,隔离的方法包括以下两种,按照常用频率排序:
1. 调整上游权重为零,如果架构上有自检测机制,那么也可以直接停止故障对象的服务,让上游健康探测时效。
2. 通过绑定hosts或者配置路由的方式,绕开故障对象。比如智能路由管理域关闭某一条线路。
这里需要注意的是,防止雪崩效应。
**降级**:降级是指为了防止产生更大的故障所采取的一种预案,一般而言,降级一定不是当下生产的给用户的最优状态,即使没有技术影响,也会或多或少带来一些业务的影响。
降级不仅仅是运维的事情,要联合业务研发或者说推动业务研发一起去实施。
## 2.2 从客户端去看运维故障处理方法
一个故障发生后,影响方会分为两类:外部用户和内部用户。
### 2.2.1.外部用户
外部用户的处理会比较麻烦,处理的思路是,如何把外部用户转变成内部用户,比如,一个外部客户使用APP出现某个问题,这时要做的是有两个方面:
1. 自己在本地模拟是否可以重现,如果可以重现,那么就不是外部客户本地环境(比如网络)问题,是内部系统问题,那么变成内部用户处理。
2. 如果自己在本地模拟不能重现,那么多找几个内部用户模拟,防止自己环境问题,同时,让用户进行hosts绑定到其他入口,排除DNS,一些外网链路问题。
如果上述两个方面都不行,那么就比较麻烦了,这时要收集一些必要的外部用户信息才能进行处理,比如出口IP,所用客户端版本等等,这里建议收集信息有个模版,一次性完成,因为外部用户处理时效往往会花在沟通成本上。
### 2.2.2 内部用户
内部用户指内部使用人员发现的问题。可以借助浏览器调试器F12跟踪,以及安装调试版客户端,通过埋点打印客户端日志来调试分析问题。
# 3.故障总结
分析定位故障的发生原因,及后续优化措施。尽量从根本上解决问题,避免发生重复故障和类似故障。