线上故障处理原则

线上故障处理原则

墨菲定律

  • 任何事情都没有表面看起来那么简单
  • 全部事情的发展都会比你预计的时间长
  • 会出错的事情总会出错
  • 若是担忧某个事情发生,那么它更有可能发生

墨菲定律暗示咱们,若是担忧某种状况会发生,那么它更有可能发生,长此以往就必定会发生。这警示咱们,在互联网公司,对生成环境发生的任何怪异现象和问题都不要轻视,对其背后的缘由必定要调查清楚。一样,海恩法则也强调任何严重的事故背后都是不少次小问题的积累,当到必定量级后会致使质变,严重的问题就会浮出水面。
那么,咱们须要对线上服务产生任何现象,哪怕是小问题,都要刨根问底,对任何现象都要遵循下面问题html

  • 为何会发生 ?
  • 发生了该怎么应对 ?
  • 怎么恢复 ?
  • 怎么避免 ?

应急目标

在生成环境发生故障时快速恢复服务,避免或减小故障带来的损失,避免或减小故障对客户的影响数据库

应急原则

  • 应第一时间恢复系统,而不是完全解决呢问题,快速止损
  • 明显资金损失时,要第时间升级,快速止损
  • 指标要围绕目标,快速启动应急过程与止损方案
  • 当前负责人不能短期内解决问题,则必须进行升级处理
  • 处理过程在不影响用户体验的前提下,保留现场

应急方法与流程

线上应急通常分为 6 个阶段缓存

  1. 发现问题
  2. 定位问题
  3. 解决问题
  4. 回顾问题
  5. 改进措施

过程当中要记住,应急只有一个整体目标:尽快恢复,消除影响。无论处于哪一个阶段,首先想到的必须是恢复问题,恢复问题不必定能定位问题,也不必定有完美的解决方案,可能经过经验或者开关等。但这能够达到快速恢复的目的,而后保留现场,以及定位问题,解决问题和复盘网络

发现问题

一般咱们经过系统层面、应用层面和中间件层面监控来发现问题架构

  • 系统层面监控包括
    1. 系统的 CPU 使用率
    2. Load average
    3. Memory
    4. I/O (网络与磁盘)
    5. SWAP 使用状况
    6. 线程数
    7. File Description 文件描述符等
  • 应用层面监控包括
    1. 接口的响应时间
    2. QPS
    3. 调用频次
    4. 接口成功率
    5. 接口波动率等
  • 中间件层面监控包括数据库、缓存、消息队列。
    1. 对数据库的负载、慢查询、链接数等监控
    2. 对缓存的链接数、占用内存、吞吐量、响应时间等监控
    3. 消息队列的响应时间、吞吐量、负载、堆积状况等监控

定位问题

分析定位过程当中先考虑系统最近发生的变化,须要考虑以下几方面分布式

  • 故障系统最近是否上过线?
  • 依赖的基础平台与资源是否升级过?
  • 依赖的系统是否上过线?
  • 运营是否在系统内作过运营变动?
  • 网络是否有波动?
  • 最近的业务量是否涨了?
  • 运营方是否有促销活动?

解决问题

解决问题要以定位问题为基础,必须清晰定位问题产生的根本缘由,在提出解决问题的有效方案,没有明确缘由以前,不用使用各类方法来尝试修复问题,可能尚未解决这个问题又引入了下个问题,想一想刚刚提到的墨菲定律ide

回顾问题

解决问题后,需应急团队与相关方回顾事故产生的缘由、应急过程的合理性、提出整改措施,主要聚焦在如下几个问题:线程

  • 相似的问题还有哪些没有发生?
  • 作了哪些事情,事故就不会再发生?
  • 作了哪些事情,及时发生故障,也不会产生影响?

改进措施

根据回顾问题提出的改进措施,以正式的项目管理方式进行统一管理,采用 SMART 原则来跟进设计

参考

  • 分布式服务架构原理、设计与实战
相关文章
相关标签/搜索