软件工程之美37讲——遇到线上故障,你和高手的差距在哪里?
线上故障处理流程
graph LR
A[评估影响范围]-->B[试图重现问题]
B-->C[临时方案和终极方案]
C-->D[风险评估及持续优化]
处理故障要点
先恢复生产,再修复bug
恢复生产并不一定需要修复 Bug,可以用一些临时性的方案,比如说回滚系统到上一个稳定的版本;重启服务看是否能恢复正常。当然在恢复之前,还要尽可能保留当时的日志、故障场景的截图、内存的 Dump(把当前内存数据保存的静态文件)等信息,用来后续查找故障原因使用。遇到线上故障,新手需要时刻牢记:恢复生产、降低损失是第一要务,修复 Bug 是其次的
如何快速定位到 Bug
- 重现 Bug。
- 分析错误日志,通过错误日志,可以马上定位到错误在哪里。所以对于平时写程序,无论是客户端还是服务端,注意收集错误日志是非常重要的,可以帮助你在排查问题的时候节约不少时间。
- 缩小问题范围。
分析Bug产生原因
高手对于线上故障,会仔细分析 Bug 产生的原因,从根本上解决,避免类似的故障再次发生。
大厂都是怎么处理线上故障的?
大厂其实是把高手解决故障的方式,变成故障处理的流程和操作手册,并且通过反复地故障演习。不断练习和强化对故障处理的流程,让系统更健壮,让新手也可以快速上手,做到高效处理线上故障。
graph LR
A[故障进行评级]-->B[恢复生产]-->C[分析故障原因]
大厂处理线上故障处理机制有哪些值得借鉴的地方
- 故障报警和轮值机制
- 实战演习
- 日志记录和分析工具