故障review的一些总结

故障review的目的

  • 归纳出现故障产生的原因

    • 检查故障的产生是否具有普遍性,并尽可能的保证同类问题不在出现,
  • 回顾故障的处理流程,并检查处理过程中所存在的问题。并确定此类问题的处理方法论。使得即便以后出现了同类的问题,也有明确的方法论来指导
  • 标明后续改进措施及落实时间点
  • 经验总结和分享

故障的级别定义

不同公司对于故障的级别有不同的定义,一般会有P1,P2,P3这几类故障,故障的严重级别依次降低。一个可能的定义如下:

  • P1 公司主站提供的服务出现异常,广告展示出现问题等。比如对大量用户(3%)的正常使用产生影响,比如%3的下单失败
  • P2 公司主站提供发服务缓慢,内部IT系统出现重大故障灯
  • P3 公司内部系统出现故障,对外服务一切正常。

参与故障review的人员

不同的故障级别需要不同层级的人员参与review, 虽然不一定那么死板,但是一定要秉承着越严重的故障,越需要更高级别的人在场,并不是让他们来批评,而是让他们以示重视,并起到监督、督促改进的作用。

  • P1 故障处理人员,系统负责人,相应的QA(DBA可选)受影响的团队的相关主要人员, 总监, VP
  • P2 故障处理人员,系统负责人,相应的QA(DBA可选)受影响的团队的相关主要人员, 总监
  • P3 故障处理人员,系统负责人,相应的QA(DBA可选)受影响的团队的相关主要人员

故障的升级和跟新时间

故障的级别并不是一成不变的。有可能故障刚刚发生的时候,观察影响可能觉的是P2,但是随着对故障的了解可能发现其实是一个P1级别的故障。当然也可能相反。

故障的升级或者降级的意义,并不仅仅是为了记录错误的严重性,或者说为了KPI的考核,它的最主要的左右在于影响故障处理人员一个可以动员人员的范围和获得的权限的大小 。比如一个P1故障出现了,故障处理人员可以为了处理故障,可以立即申请重要服务器的root权限,服务器管理员必须无条件审批通过,但是可能P3情况下服务器管理员就不会审批通过,而是让适合有root权限的人来完成操作。

从故障的发现,到故障的review完成,一直需要持续的跟新故障的进度。越是严重的故障越要更频繁的跟新故障的进度。这样好方便相关人员了解故障的处理情况。

故障review的时间点

考虑到人们总是懒惰的,因此为了保证流程和规范能够有效的执行下去,并确保具有「分享价值」的故障可以及时的被分享出去,公司从流程层面应该强制不同级别的故障必须在故障处理完成以后的多少个小时内review完成。

比如P1级别的故障必须在故障处理完成的12歌小时之内review完成。P3级别的故障必须在故障的36个小时之内review完成

故障review的准备工作

故障review的准备工作,主要是为了使得故障参与者提前准备好在review过程中所需要发表的内容。这样会使得review过程高效一些,也可以避免在review过程中可能会遗漏的东西。

故障review的详细步骤

故障review的详细步骤比如包含:从故障开始产生,到故障被发现、然后故障的具体处理过程、到故障处理完成的详细过程,需要包含日期、时间、事件、人员等其他有效信息。

主要是为了能够通过详细的过程描述,方便找出我们在发现故障和处理故障过程中暴露出的问题,做为后续改进计划的依据。一个可能的例子如下:

 yyyy-M-dd hh:mm 故障因xx开始
yyyy-M-dd hh:mm xx 发现故障 (或收到报警)
yyyy-M-dd HH:mm xx 确认问题真实存在,通知xx上线处理,并通报故障
yyyy-M-dd HH:mm xx 查看监控及日志,确认影响范围及故障发生时间点
yyyy-M-dd HH:mm xx 确认问题原因,通知xx开始回滚(或修bug)
........ ....
yyyy-M-dd HH:mm xx 确认线上功能已经恢复
yyyy-M-dd HH:mm xx 开始修复数据
yyyy-M-dd HH:mm xx 确认故障已经结束 故障的影响:xxx系统xxx服务受影响,大约影响3%的对外服务
故障持续xxx时xxx分

故障review的结论

故障review的结论,主要是明确故障下面的问题:

  • 故障产生的原因

    • 代码bug?设计缺陷?需求缺陷?历史脏数据未考虑到?系统有后门被人错用?
    • 为什么上线前Dev 自测没发现?
    • 是没有设计review么?没有code review 么?
    • 是case 没有执行么?
    • 为什么上线前PM/QA测试未能发现?
    • 是没有测试环境么?
    • 是流程/规范未执行?
    • 是没有进行codediff?
    • 依赖第三方不受控?
    • 是误操作?
  • 是否存在没有及时发现故障的问题,以及原因是什么
    • 线上操作后没有检查 功能、监控、日志 的问题么?
    • 监控不完整么?项目过程中我们没有写业务监控么?不了解如何加监控么?
    • 报警阈值设置不合理么?
    • 人员未响应报警么?线上日志大家每天没有人看么?
    • 业务量太小没关注的问题?
  • 是否存在故障处理缓慢的问题,以及原因是什么
    • 没带电脑回家?在外面么?
    • 没有看监控定位故障时间?
    • 定位问题过程合理么?场景难复现?
    • 改代码比较耗时间么?没有测试环境验证么?

相应的改进计划

故障的review完成必须要产出改进计划,同时要确保改进计划细化,有截止日志,并且有监督人员。

- 改进计划是什么?
- 改进开始时间,改进截止日期?
- 监督人是谁?

故障review的一些总结的更多相关文章

  1. 一个磁盘I/O故障导致的AlwaysOn FailOver 过程梳理和分析

    下面是我们在使用AlwaysOn过程中遇到的一个切换案例.这个案例发生在2014年8月,虽然时间相对久远了,但是对我们学习理解AlwaysOn的FailOver原理和过程还是很有帮助的.本次FailO ...

  2. 从一次线上故障思考Java问题定位思路

    问题出现:现网CPU飙高,Full GC告警 CGI 服务发布到现网后,现网机器出现了Full GC告警,同时CPU飙高99%.在优先恢复现网服务正常后,开始着手定位Full GC的问题.在现场只能够 ...

  3. Code Review最佳实践

    我一直认为Code Review(代码审查)是软件开发中的最佳实践之一,可以有效提高整体代码质量,及时发现代码中可能存在的问题.包括像Google.微软这些公司,Code Review都是基本要求,代 ...

  4. Code Review最佳实践(转)

    我一直认为Code Review(代码审查)是软件开发中的最佳实践之一,可以有效提高整体代码质量,及时发现代码中可能存在的问题.包括像Google.微软这些公司,Code Review都是基本要求,代 ...

  5. Java进程故障排查思路及步骤

    故障场景 Java进程出现问题,通常表现出如下现象: Web应用响应时间长/超时,甚至不响应 CPU使用率极高/低,频繁出现Full GC,甚至OutOfMemoryError 响应时间长.超时,甚至 ...

  6. 放弃等待,故障到来:少一个 await 引发的 tcp 连接泄漏故障

    更新:后来升级至 .NET Core 2.2 Preview 3 ,并将 System.Net.Http 升级至 4.3.4 之后没出现这个问题,问题与 https://github.com/dotn ...

  7. Code Review怎样做好

    一.背景 最近随着交易业务快速扩展,研发组内新项目及新成员越来越多,如何做好Code Review,把控研发人员开发代码质量很是关键. 对于大部分业务团队,谈到Code Review就会面露哀状:   ...

  8. 从一次故障聊聊前端 UI 自动化测试

    背景 事件的起因在于老板最近的两次"故障",一次去年的,一次最近.共同原因都是脚手架在发布平台发布打包时出错,导致线上应用白屏不可用. 最神奇的是,事后多次 Code Review ...

  9. 从0开始搭建SQL Server AlwaysOn 第二篇(配置故障转移集群)

    从0开始搭建SQL Server AlwaysOn 第二篇(配置故障转移集群) 第一篇http://www.cnblogs.com/lyhabc/p/4678330.html第二篇http://www ...

随机推荐

  1. iOS NSDate等时间类的使用

    一.NSDate NSDate对象用来表示一个具体的时间点. NSDate是一个类簇,我们所使用的NSDate对象,都是NSDate的私有子类的实体. NSDate存储的是GMT时间,使用的时候会根据 ...

  2. 在View and Data API中更改指定元素的颜色

    大家在使用View and Data API开发过程中,经常会用到的就是改变某些元素的颜色已区别显示.比如根据某些属性做不同颜色的专题显示,或者用不同颜色表示施工进度,或者只是简单的以颜色变化来提醒用 ...

  3. Android中的Libraries以及Order and Export的使用。

    1Add JAR 从Eclipse的现有所有工程中,添加jar包到该工程下 2Add External JARs 从Eclipse外的其他的位置,添加jar包到该工程下 3Add Variable 增 ...

  4. 【代码笔记】iOS-柱状图

    一,效果图. 二,工程图. 三,代码. RootViewController.h #import <UIKit/UIKit.h> @interface RootViewController ...

  5. 一个基于Microsoft Azure、ASP.NET Core和Docker的博客系统

    2008年11月,我在博客园开通了个人帐号,并在博客园发表了自己的第一篇博客.当然,我写博客也不是从2008年才开始的,在更早时候,也在CSDN和系统分析员协会(之后名为“希赛网”)个人空间发布过一些 ...

  6. [Bind(Exclude = "OrderId")][ScaffoldColumn(false)]

    [Bind(Exclude = "OrderId")] 的意思是:View里的Model,在你提交给 Action时,不会绑定到Action的参数Model,默认它会绑定. mvc ...

  7. Oracle学习笔记五 SQL命令(三):Group by、排序、连接查询、子查询、分页

    GROUP BY和HAVING子句 GROUP BY子句 用于将信息划分为更小的组每一组行返回针对该组的单个结果 --统计每个部门的人数: Select count(*) from emp group ...

  8. [数据分析]excel带名称的四象限散点图制作

    本文前言:方法来至Excel图表之道这本数,偶然看到,好久没出数据分析的文章了,也难怪最近几个月都忙作网页,数据分析自己也就用excell和sql 正文: 带象限的散点图效果如下: 看到图片,这里制作 ...

  9. Struts2中的Ognl

    OGNL(Object-Graph Navigation Language)全称为对象图导航语言,是一种功能强大的表达式语言,它通过简单一致的语法,可以任意存取对象的属性或者调用对象的方法,能够遍历整 ...

  10. 部署 DevStack - 每天5分钟玩转 OpenStack(17)

    本节按照以下步骤部署 DevStack 实验环境,包括控制节点和计算节点 创建虚拟机 按照物理资源需求创建 devstack-controller 和 devstak-compute 虚拟机 安装操作 ...