一、背景
我们有个移动考勤的系统,运维监控系统显示,每到上下班时间,考勤数据库的CPU就飙升到100%,磁盘读写请求等待时间变长,最初无法确定是磁盘性能下降导致的CPU飙升,还是CPU飙升导致的磁盘性能下降,下面是在CPU到100%时通过iostat监测的磁盘io和CPU的具体情况。
二、监测命令
iostat -c -x -k -d 1
三、监测截图
从上面的图可以看出,在CPU idle剩余0.05%时,iowait很低,说明CPU繁忙,磁盘io不忙,导致CPU无法有多余的算力处理其他请求。
在CPU idle 90.74%时,磁盘io正常。
综上两张图分析,认为是考勤的程序有不当的sql语句导致CPU飙升,经过开发同事的定位,终于抓住一条慢sql进行优化,优化后上下班考勤CPU正常。