其实高IO也可能导致CPU高,因为磁盘I/O比较慢,会导致CPU一直等待磁盘I/O请求。分析数据库IO属于基本技能(毕竟大部分数据库调优到了极致,最后的瓶颈也可能会是IO,而且IO调优的难度会高一些)。
1、首先用万能的top命令查看进程
[root@localhost ~]# top
top - 11:53:04 up 702 days, 56 min, 1 user, load average: 7.18, 6.70, 6.47
Tasks: 576 total, 1 running, 575 sleeping, 0 stopped, 0 zombie
Cpu(s): 7.7%us, 3.4%sy, 0.0%ni, 77.6%id, 11.0%wa, 0.0%hi, 0.3%si, 0.0%st
Mem: 49374024k total, 32018844k used, 17355180k free, 115416k buffers
Swap: 16777208k total, 117612k used, 16659596k free, 5689020k cachedPID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
14165 mysql 20 0 8822m 3.1g 4672 S 162.3 6.6 89839:59 mysqld
40610 mysql 20 0 25.6g 14g 8336 S 121.7 31.5 282809:08 mysqld
49023 mysql 20 0 16.9g 5.1g 4772 S 4.6 10.8 34940:09 mysqld
很明显是前面两个mysqld进程导致整体负载较高。
而且,从 Cpu(s) 这行的统计结果也能看的出来,%us 和 %wa 的值较高(us值整体不算高),表示当前比较大的瓶颈可能是在用户进程消耗的CPU以及磁盘I/O等待上。