线上有一个很慢的查询响应:
top :看到iowait 升高
iostat -x -d 1 :iostat 的输出你应该非常熟悉。观察这个界面,我们发现,磁盘 sda 每秒的读数据为 32 MB, 而 I/O 使用率高达 97% ,接近饱和,这说明,磁盘 sda 的读取确实碰到了性能瓶颈。
pidstat -d 1 : 看进程的i/o的情况,可以看到mysql的读写速率为32 MB每秒。
strace -f -p pid :mysql是多线程的进程,所以要加f,看看具体使用的情况。
lsof -p pid :列出进程打开的文件。文件的地址啊,是读或者写啊
之后在mysql执行:
show full processlist
然后看到具体的sql语句,查询时间,状态等信息。
然后分析一下sql语句:explain 语句 。分析结果,例如没有索引啊等问题。