有青岛的同行问我,线上突然出问题,第一件事该干嘛?我的答案是:先止损,把影响控制住,再去找原因,过后再做复盘,顺序别乱,一上来就改代码往往越改越糟。信服无限青岛团队处理过不少线上故障。
第一步先止损
故障来了先想怎么把影响降下来,而不是急着找根因。回滚、降级、限流,能用的先用上。青岛不少团队一慌就盯着代码找原因,用户还在受影响,白白拖长了故障时间,损失越滚越大。
止损手段要提前备好。青岛做运维的都清楚,回滚包、开关、降级预案平时就得准备着,真出事时才能一键生效。临阵磨枪来不及,平时的准备这时候最值钱,能救命。
再冷静定位
影响控制住之后,再顺着日志和监控去找原因。按时间线捋,别到处乱猜。青岛不少团队排查时东一榔头西一棒子,换个参数试试、改行代码看看,越试越乱,把现场都破坏了。
定位要有章法。青岛做技术的,会先看最近改了什么、异常从什么时候开始,再对照日志找线索。有了方向再动手,比盲目试错快得多,也不会在慌乱中制造新问题。
事后要复盘
问题解决不等于结束,得复盘一下为什么会发生、怎么防。把教训沉淀下来。青岛不少团队故障一恢复就翻篇,同样的坑过阵子又踩一遍,团队始终没长进,白白交了学费。
复盘要落到改进。信服无限青岛团队做技术服务时,会把每次故障的根因和改进动作记下来,该加监控加监控、该改流程改流程。踩过的坑不再踩,系统才越来越稳,团队也越来越强。
线上排查的常见疑问
排查先做什么
先止损控制影响,再定位根因,顺序很重要,别一上来就改代码。
复盘有必要吗
有,复盘能把偶发问题变成经验,避免同类故障反复出现。
顺序别乱,才处理得快
先止损、再定位、后复盘,线上问题才处理得又快又稳。信服无限团队做运维时,最在意有没有把影响控制住。把该做的做在前面,后面就少操不少心,这道理放在哪都通用。事情一件件理顺,看着慢,走着走着你就会发现比想象中顺。稳当比求快更划算,步子踏实了,路才走得远。你要在青岛,先检查一下团队有没有现成的回滚和降级预案。