每天在大约同时,我们的mysql从服务器的IO使用率上升到100%。
我已经设置了一个脚本,每五分钟获取一次 IO 信息,以便我可以找出发生这种情况的原因。
到目前为止,我可以看到 mysql 进程导致了这个峰值,但我无法找出 mysql 实际上做了什么导致了这种情况。
使用pidstat
我得到:
Linux 3.2.0-4-amd64 (-db03) 09/03/2014 _x86_64_ (24 CPU)
03:30:05 AM PID kB_rd/s kB_wr/s kB_ccwr/s Command
03:30:20 AM 418 0.00 5.06 0.00 jbd2/sda1-8
03:30:20 AM 31124 878.88 12179.08 0.00 mysqld
03:30:20 AM PID kB_rd/s kB_wr/s kB_ccwr/s Command
03:30:35 AM 418 0.00 1.07 0.00 jbd2/sda1-8
03:30:35 AM 31124 1124.80 12924.00 0.00 mysqld
Average: PID kB_rd/s kB_wr/s kB_ccwr/s Command
Average: 418 0.00 3.07 0.00 jbd2/sda1-8
Average: 31124 1001.80 12551.42 0.00 mysqld
使用pt-mysql-summary
我得到:
# Processlist ################################################
Command COUNT(*) Working SUM(Time) MAX(Time)
------------------------------ -------- ------- --------- ---------
Connect 2 2 3500000 3500000
Query 1 1 0 0
Sleep 2 0 15 8
User COUNT(*) Working SUM(Time) MAX(Time)
------------------------------ -------- ------- --------- ---------
monitoring 2 0 0 0
root 1 1 0 0
system user 2 2 3500000 3500000
Host COUNT(*) Working SUM(Time) MAX(Time)
------------------------------ -------- ------- --------- ---------
2 2 3500000 3500000
localhost 3 1 0 0
db COUNT(*) Working SUM(Time) MAX(Time)
------------------------------ -------- ------- --------- ---------
flats_production 2 1 600 600
NULL 3 2 3500000 3500000
State COUNT(*) Working SUM(Time) MAX(Time)
------------------------------ -------- ------- --------- ---------
2 0 0 0
init 1 1 0 0
updating 1 1 600 600
Waiting for master to send eve 1 1 3500000 3500000
但show full processlist
没有表现出任何异常。
关于如何调试这个问题,我有什么想法吗?
答案1
使用 pt-ioprofile 检查 mysql 正在读取和写入什么。http://www.percona.com/doc/percona-toolkit/2.1/pt-ioprofile.html