举一个左耳朵老师在帮一家公司做一个慢 SQL 的故障复盘大例子: 一共问了近 9 个为什么。
- 为什么从故障发生到系统报警花了 27 分钟?为什么只发邮件,没有短信?
- 为什么花了 15 分钟,开发的同学才知道是慢 SQL 问题?
- 为什么监控系统没有监测到 Nginx 499 错误,以及 Nginx 的 upstream_response_time 和 request_time?
- 为什么在一开始按 DDoS 处理?
- 为什么要重启数据库?
- 为什么这个故障之前没有发生?因为以前没有上首页,最近上的。
- 为什么上首页时没有做性能测试?
- 为什么使用这个高危的 SQL 语句?
- 上线过程中为什么没有 DBA 评审?
不足的地方:
第一,优化故障获知和故障定位的时间。
- 从故障发生到我们知道的时间是否可以优化得更短?
- 定位故障的时间是否可以更短?
- 有哪些地方可以做到自动化?
第二,优化故障的处理方式。
- 故障处理时的判断和章法是否科学,是否正确?
- 故障处理时的信息是否全透明?
- 故障处理时人员是否安排得当?
第三,优化开发过程中的问题。
- Code Review 和测试中的问题和优化点。
- 软件架构和设计是否可以更好?
- 对于技术欠债或是相关的隐患问题是否被记录下来,是否有风险计划?
第四,优化团队能力。
- 如何提高团队的技术能力?
- 如何让团队有严谨的工程意识?
此文章为5月Day27学习笔记,内容来源于极客时间《左耳听风》,强烈推荐该课程!