当前位置:网站首页>【软件工程之美 - 专栏笔记】37 | 遇到线上故障,你和高手的差距在哪里?
【软件工程之美 - 专栏笔记】37 | 遇到线上故障,你和高手的差距在哪里?
2022-08-04 17:49:00 【if...else...】
专栏信息
专栏作者:宝玉
专栏发布平台:极客时间
主要内容
新手和高手在应对故障时有什么不同?大厂在处理线上故障时,有哪些可以学习借鉴的地方。
一、遇到线上故障,新手和高手的差距在哪里?
新手遇到复杂的线上故障,不知道该怎么下手
遇到复杂的故障,通常新手就不知道该怎么下手了。
对高手来说,会在实践中总结一套自己解决问题的步骤,遇到问题,会按照解决问题的步骤有条不紊地去分析和解决。
新手遇到线上故障,会想着马上修复 Bug
当发现 Bug 后,尤其是自己的 Bug,很多开发人员马上就想到了 Bug 的修复方案,迫不及待就要去写代码打补丁了。
而对于高手来说,会首先对故障进行评级,看对用户的影响范围,如果是核心业务,大面积影响用户,那么当务之急是恢复生产,然后再考虑如何去修复 Bug。
新手遇到线上故障,不知道如何快速定位到 Bug 在哪
对于比较复杂的线上故障,新手通常不知道从哪里下手,看日志看代码都看不出所以然,而高手却总能快速地定位到 Bug 在哪。
新手解决完线上故障后,下次可能还会发生类似故障
对于线上的故障,如果不找到产生的原因,那么下一次还会发生类似的故障,甚至比以前还更严重。
高手对于线上故障,会仔细分析 Bug 产生的原因,从根本上解决,避免类似的故障再次发生。
二、大厂都是怎么处理线上故障的?
通过看这些大厂的故障处理流程,你会发现,大厂其实是把高手解决故障的方式,变成故障处理的流程和操作手册,并且通过反复地故障演习。不断练习和强化对故障处理的流程,让系统更健壮,让新手也可以快速上手,做到高效处理线上故障。
至于具体的处理流程,其实大同小异。
- 首先,对故障进行评级。
- 其次,要马上恢复生产,避免进一步损失。
- 另外,要分析故障原因,修复故障。
- 最后,记录故障发生处理全过程,分析故障原因,提出后续改进方案。
三、大厂处理线上故障处理机制有哪些值得借鉴的地方?
故障报警和轮值机制
要做到最快速度处理线上故障,关键就是要让正确的人第一时间就可以去响应。正确的人就是对故障服务最熟悉的人,通常就是这个服务的开发人员。
实战演习
实战演习就是频繁地对故障进行演练,来测试平时做的这些方案是不是真的可行,这样遇到真正的故障,才不至于手忙脚乱不知道如何应对。
其中最有名的就是 Netflix 的混乱猴子军团。
也有人把这样的实战演习叫“混沌工程”。
日志记录和分析工具
对于软件来说,线上出现问题,分析日志记录是最简单有效的定位问题方式。
还有一些其他好的实践,例如说新功能上线时,灰度发布的策略。通过开关控制,先让一小部分用户使用,如果出现故障,马上关闭开关,避免影响。
四、其他摘抄
- 恢复生产并不一定需要修复 Bug,可以用一些临时性的方案,比如说回滚系统到上一个稳定的版本;重启服务看是否能恢复正常。
- 一种常见手段就是先重现 Bug,因为有了重现的步骤,就等于将问题的范围,缩小到重现 Bug 的这几步操作相关的代码上,就很容易发现问题在哪。
- 还有一种手段就是分析错误日志,通过错误日志,可以马上定位到错误在哪里。
总结
今天带你一起学习了线上故障的处理。对于线上故障的处理,基本原则就是要先尽快恢复生产减少损失,然后再去查找原因,最后不要忘记总结复盘。
边栏推荐
- 区间贪心(区间合并)
- 44. 通配符匹配 ●●● & HJ71 字符串通配符 ●●
- R语言ggplot2可视化:使用ggpubr包的ggbarplot函数可视化柱状图、color参数指定柱状图的边框的色彩
- Understand Chisel language. 32. Chisel advanced hardware generator (1) - parameterization in Chisel
- 网页端IM即时通讯开发:短轮询、长轮询、SSE、WebSocket
- clickhouse 上下线表
- el-date-picker 设置时间范围
- R语言使用ggpubr包的ggsummarystats函数可视化柱状图(通过ggfunc参数设置)、在可视化图像的下方添加描述性统计结果表格、palette参数配置柱状图及统计数据的颜色
- 解决错误:The package-lock.json file was created with an old version of npm
- 基于 eBPF 的 Kubernetes 可观测实践
猜你喜欢
随机推荐
哈夫曼树(暑假每日一题 15)
golang安装和基础配置
树莓派连接蓝牙音箱
【技术积累】JS事件循环,Promise,async/await的运行顺序
荣耀发布开发者服务平台,智慧生态合作提速
在VMD上可视化hdf5格式的分子轨迹文件
JS兼容问题总结
js函数传参是按值传递还是按引用传递?
mysqlbinlog 超过500g自动删除,保留7个,求大深给个版本
Create Sentinel high-availability cluster current limiting middleware from -99
linux下Mysql的简单操作
关于ETL的两种架构(ETL架构和ELT架构)
Introduction of three temperature measurement methods for PT100 platinum thermal resistance
clickhouse online and offline table
Understand Chisel language. 32. Chisel advanced hardware generator (1) - parameterization in Chisel
《机器学习的随机矩阵方法》
【web自动化测试】Playwright快速入门,5分钟上手
华为云计算HCIE之oceanstor仿真器的使用操作
Error when using sourcemap for reporting an error: Can‘t resolve original location of error.
leetcode 14. 最长公共前缀