故障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. BFC深入理解

    BFC 在上一篇文章中,清除浮动方法解析,我们谈及了一些使用css属性解决浮动带来的影响.但是在解决浮动带来的影响的方法中,如果细心思考,会产生如下疑问: 为什么overflow可以清除浮动带来的影响 ...

  2. 使用 ExecuteMultiple 提高批量数据加载的性能

    您可以使用 ExecuteMultipleRequest 消息在 Microsoft Dynamics CRM Online 2016 Update 和 Microsoft Dynamics CRM ...

  3. commit(), commitNow()和commitAllowingStateLoss()

    关于FragmentTransaction的各种提交方法: commit(),commitAllowingStateLoss(),commitNow()和commitNowAllowingStateL ...

  4. 关于多个block问题

    在某个添加文本的页面中,leftbarbutton是删除(直接将数组中的这个string删除),rightbarbutton是完成,分别对应两个block,完成的block是一开始写的,写到了view ...

  5. jquery双向列表选择器select版

    这个是select版的,若想美化某些样式是不支持得,可以用div模拟版的,功能基本实现能用了,需要其他功能自己加上. div模拟版链接:http://www.cnblogs.com/tie123abc ...

  6. ubuntu自动执行

    一般先写个sh脚本文件---->要执行的语句写入sh文件----->chromd -x ???.sh增加权限即可 crontab -e * * * * * /home/???.sh */1 ...

  7. 【转】你所不知道的HTML <head/> 头标签

    HTML的头部内容特别多,有针对SEO的头部信息,也有针对移动设备的头部信息.而且各个浏览器内核以及各个国内浏览器厂商都有些自己的标签元素,有很多差异性.移动端的工作已经越来越成为前端工作的重要内容, ...

  8. Spring 4 使用Freemarker模板发送邮件&添加附件

    前言 Spring对Java的邮件发送提供了很好的支持,提供了超级简单的API,大大简化了Java邮件发送功能的开发. Spring对Email的支持是基于JavaMail API开发的,所以,我们在 ...

  9. [Erlang 0111] Erlang Abstract Format , Part 2

       上回书,我们说到飞天玉虎蒋伯芳来到蜈蚣岭,不是,重来,上回咱们说到可以在Erlang Shell里面手工构造,加载并调用一个模块.在那个demo里面,我把多个Form单独生成出来,最后放在一起做 ...

  10. 关于B树的一些总结

    B树的定义 一棵m阶的B树满足下列条件: 树中每个结点至多有m个孩子. 除根结点和叶子结点外,其它每个结点至少有m/2个孩子. 根结点至少有2个孩子(如果B树只有一个结点除外). 所有叶结点在同一层, ...