磁盘坏道
磁盘故障是个非常常见的现象。而磁盘坏道便是其中最常见的问题。而当我们的应用做磁盘操作的时候 正巧落在坏道上面,就会导致卡住的现象。如果坏道比较小的话,会在一段时间内恢复响应。但是,如果下次操作又落到坏道上面,依旧会卡主-_-!
故障现象
开发陆续收到服务器负载过高以及业务报错告警。表现为偶尔的调用超时。经排查业务告警和负载过高均出现在同一台机器上。这时候呢,我们就可以立马翻看监控了。
监控
(注:这边只是示意图,产线截图因为安全原因不可能放出来的) 从中可以发现,超时的调用时间分布和CPU Busy IoWait的时间分布一致。既然是IO Wait,我们很自然的想到可能是磁盘有问题。
磁盘监控
图中可以看到,disk和cpu iowait时间一致。同时观测到,我们当时的iops仅有30左右。很明显的,可以推导出当时磁盘有问题。SA反馈给厂商后,反馈磁盘有坏道。
后续方案
首先,由于磁盘问题不能立马解决(需要等厂商换盘),所以先下线这几台机器的流量,等待下一次的维护后再上线。在应用层,我们可以通过配置异步日志的方式来减少损失。但异步日志满了之后,依旧会出现卡顿的现象,那么我们可以配置成异步日志可丢的模式,这就需要在日志的准确性和系统的高可用之间做取舍了。
总结
磁盘出问题是一个非常常见的现象,在遇到问题后,和监控曲线相对应就能很快找到原因。
类似的性能/故障排查清单以及经验可以在下面这本书中找到
本文转载自微信公众号「解Bug之路」,可以通过以下二维码关注。转载本文请联系解Bug之路公众号。