全站性故障的抢修思考

“润物无声”的故障

很多时候,突然出现的全站大规模故障往往让人措手不及,但是,故障真的是从天而降无法预计到的么?

  • 服务器”随机”出现crash:实际上往往是某个版本内核在特定数据包、内核调用时出现的kernel crash

  • 应用服务少量的core: 可能受到攻击、滥用导致的panic,也许在某些业务高峰实践会出现大面积的雪崩

作为DevOps的实践,监控和趋势判断是非常重要的基础能力,这需要在监控和数据分析中添加数据分析能力,如果能够融入机器学习,应该能够更为敏锐地发现异常。

备注

任何一位维护线上系统的SRE,都需要非常专注且敏锐都意识,绝对不能忽视系统给我们提供都异常”线索”/

“雪崩”

很多时候,我们在抢修系统时往往会急于恢复全站功能,大批量重启服务以期缩短恢复实践。不过,心中一定要有对全站每个组件能力的预估,或者说,我们重启服务的速度实际上应该不是随机选择的,而是在平时已经经过演练,知道重启速度会对系统的最短板应用的压力。

很多时候,快速启动服务A可能会导致关联的服务B在大量涌入的并发请求中出现雪崩,无法响应,甚至导致连锁的全站瘫痪。

如何解决这个问题,一些想法:

  • DevOps的服务重启要通过平台来进行,平台的并发速度要在日常中做过压测

  • 通过自动全链路的监控,能够在不断重启的服务及时反馈出阻塞和异常

  • 系统要不断优化提供自动反馈来限制操作行为