iostat -x 3
检查服务器io情况
解释一下 -x参数输出列意思
rrqm/s:每秒这个设备相关的读取请求有多少被Merge了
wrqm/s:每秒这个设备相关的写入请求有多少被Merge了。
rsec/s:每秒读取的扇区数;wsec/:每秒写入的扇区数。
r/s:The number of read requests that were issued to the device per second;
w/s:The number of write requests that were issued to the device per second;
await:每一个IO请求的处理的平均时间(单位是毫秒)。这里可以理解为IO的响应时间,一般地系统IO响应时间应该低于5ms,如果大于10ms就比较大了。
%util:在统计时间内所有处理IO时间,除以总共统计时间。
Iotop查看占用io最高的进程
这里可以看到进程最高的是mysql
查看最近的死锁
show engine innodb status\G
查看正在执行的线程
SELECT * FROM `information_schema`.`PROCESSLIST` WHERE INFO IS NOT NULL;
查看正在执行的线程,并按 Time 倒排序,看看有没有执行时间特别长的线程
select * from information_schema.processlist where Command != 'Sleep' order by Time desc;
找出所有执行时间超过 5 分钟的线程,拼凑出 kill 语句,方便后面查杀
select concat('kill ', id, ';') from information_schema.processlist where Command != 'Sleep' and Time > 300 order by Time desc;
查看慢查询的执行计划:explain
先简单说一下各列的含义和用途,
第一列,会话id,在mysql层面查杀使用的
第二列,user列,访问的用户,这个命令就只显示你权限范围内的sql语句。
第三列,host列,显示这个语句是从哪个ip的哪个端口上发出的。
第四列,db列,显示这个进程目前连接的是哪个数据库。
第五列,command列,显示当前连接的执行的命令。
第六列,time列,此这个状态持续的时间,单位是秒,如果后面有语句,要小心了,说明该语句有问题
第七列,state列,显示使用当前连接的sql语句的状态 第八列,info列,显示这个sql语句