前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >分析事故根本原因的利器——5Why分析法

分析事故根本原因的利器——5Why分析法

作者头像
草捏子
发布2021-04-23 11:13:36
1.6K0
发布2021-04-23 11:13:36
举报
文章被收录于专栏:草捏子草捏子

笔者最近接触到5Why分析法,觉得该方法简单实用,有助于分析问题的原因,因此尝试用来分析今年的一次生产事故。在开始分析前,先对5Why分析法进行介绍。

5Why分析法,是一种分析问题根本原因的方法,由丰田集团创始人丰田佐吉提出,后来成为丰田汽车公司获得成功的重要方法,并且被融入到各种管理方法中。该方法的字面意思是 5 个为什么,指的是对一个问题连续问出 5 个为什么,以分析其根本原因。丰田汽车前副社长大野耐一举过这样一个例子:

  • 问题 1 :为什么机器停了?

答:因为机器超载,保险丝烧断了。

解决方案:换保险丝(防堵措施)

  • 问题 2 :为什么机器会超载?

答:因为轴承的润滑不足。

解决方案:加润滑剂(改善措施)

  • 问题 3 :为什么轴承会润滑不足?

答:因为润滑泵失灵了。

解决方案:修理润滑泵(改善措施)

  • 问题 4 :为什么润滑泵会失灵?

答:因为它的轮轴耗损了。

解决方案:换轮轴(改善措施)

  • 问题 5 :为什么润滑泵的轮轴会耗损?

答:因为杂质跑到里面去了。

解决方案:给润滑泵安装过滤器(根本措施)

从上述 5 个问题,可看出,通过问题 1 只能看到问题的表象,而问题 2 到问题 4,仍只能对问题进行改善,而直到问题 5,才暴露出了根本原因,得以从根上解决问题。随着追问为什么,我们更容易去接近造成问题的根本原因。

5Why分析法的注意事项有:

  1. 问题数量不是关键,关键是找出根本问题。虽然叫5Why分析法,但不是必须要问 5 个为什么,一般 3 ~ 7 个都行,少于 3 个可能找不到根本原因,超过 7 个还没找到,那需审视问题本身是不是有问题,关注的焦点是不是偏移了。
  2. 追问的时候不要偏离主题。要朝着解决问题的方向进行分析,不要只从外界不可控因素寻找问题,而应寻找可控的因素。

下面用5Why分析法分析一个笔者遇到的实际生产事故。

事故即将发生时,数据库中正在执行的线程数超过预先设置的阈值 32 个,于是系统监控发出报警,随后数据库的CPU使用率开始飙高,紧接着系统的所有模块访问数据库失败,然后整个系统呈不可用状态。

当时的应急解决办法是查看数据库正在执行的SQL,然后定位SQL所涉及功能,将该功能所在模块进行重启,重启后CPU使用率开始下降,系统慢慢开始恢复,但随着问题模块重启完成后,CPU又逐渐呈现上升趋势,但这时已经给定位问题争取了一定的分析时间,定位到是一批特殊数据造成的,于是对这批数据进行了应急处理,最后事故解决,系统顺利恢复了。

下面笔者尝试从三个角度进行分析

角度一 “制造”,为什么会发生?

  • 问题 1:为什么数据库的线程数会增加?

答:正在执行的SQL执行时间长。

  • 问题 2:为什么正在执行的SQL执行时间长?

答:因为正在执行的SQL发生了死锁。

  • 问题 3:为什么SQL会发生死锁?

答:同时删除相同的一批数据,而删除时出现乱序。

  • 问题 4:为什么删除相同的一批数据?

答:代码逻辑问题,不需要重复删除。

解决方案:更改代码逻辑,避免重复删除。

角度二 “检验”,为什么没有发现?

  • 问题 1:为什么代码上线几个月都没有发现?

答:未出现大量的死锁情况。

  • 问题 2:为什么没有出现大量的死锁情况?

答:未出现这种造成大量并发的数据,测试用例也未覆盖。

  • 问题 3:在小量并发数据的情况也可能发生死锁,为什么没有发现该逻辑会产生死锁?

答:未能及时从错误日志中发现问题。

  • 问题 4:为什么未能及时从错误日志中发现问题?

答:错误日志中有较多无用的日志,扰乱了日志分析。

解决方案:清理代码中无用的错误日志打印,及时检查错误日志,并解决问题。

角度三 “系统”,为什么没有从系统上预防事故?

  • 问题 1:为什么没有从系统上预防事故?

答:已经做了数据库正在执行线程数的预警,但发现时,数据库的CPU上升速度已经很快了,提供的反应时间不多。

  • 问题 2:为什么单个模块的问题,会影响系统全部模块?

答:因为各模块都有使用到base数据库,base数据库一旦不可用,便影响了全部模块。

  • 问题 3:为什么各模块都需要使用base数据库?

答:系统设计时,未将各模块所使用的数据库进行隔离。

解决方案:将各模块使用的数据库进行隔离,即使单模块出现问题,也不会通过数据库影响到其他模块(但是该方案的成本较高,相当于进行整体的重构了)

以上笔者通过三个角度来对此次事故进行分析,随着追问,对问题的认识也会更加清晰。希望这个5Why分析法的案例能对你有启发,可将其作为一种思维方式,应用于实际的问题分析中。

我是草捏子,一只热爱技术和生活的草鱼,我们下期见!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-04-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 草捏子 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档