数据库场景下,因为操作系统某些过程操作(比方磁盘、网络等)占用I/O带宽过高,造成利用因为I/O带宽有余产生性能劣化的问题,如何疾速、精确地诊断利用性能问题,并对问题进行定界定位是运维人员的重要挑战。
案例一
GaussDB利用磁盘IO类故障在线诊断
该案例通过对Gaussdb利用注入磁盘IO故障来模仿。
故障注入前
利用实时拓扑关系如下图所示,gaussdb利用蕴含1个master(过程id:1548)和1个slaver(过程id:1739),运行在虚拟机vm02上,gaussdb master有5个客户端TCP连贯。
此时,gaussdb的利用性能如下图所示,均匀600 TPS。
注入故障
在gaussdb的数据目录注入磁盘读写故障,命令如下:blade create disk burn --read --write --path /data --timeout 120
利用性能诊断
此时利用性能呈现劣化,从大略600 TPS → 60 TPS,降落了近10倍,如下图所示:
故障发现与定位后果如下图所示,能够看出已产生利用性能劣化事件,起因是磁盘读写响应异样。
具体的故障流传关系如下图所示,可见利用性能劣化是因为磁盘写响应异样以及block层request时延异样,进一步的磁盘类异样是因为故障注入工具chaos(过程id:3941335)导致。
案例二
Redis利用网络时延类故障在线诊断
注入故障
通过故障注入工具ChaosBlade注入2分钟网络时延故障,具体命令:blade create network delay --time 50 --offset 50 --interface ens1 --local-port 3742 --timeout 120
故障注入期间redis sli指标呈现显著劣化,大略从10ms → 80ms
利用性能诊断
故障发现与定位后果如下图所示,能够看出已产生利用性能劣化事件,起因是网络时延异样。
具体的故障流传关系如下图所示,可见利用性能劣化是因为网络时延异样导致。