阿里云的机器,今天收到客服来的电话,说服务器的磁盘io很重。于是登录到服务器查看,并没有发现问题,所以怀疑是间歇性地。正要考虑写个脚本的时候,幸运的抓到了一个线索,造成磁盘io很高的幕后黑手是mysql。此时去show processlist,但未发现有问题的队列。原来只是一瞬间。只好继续来写脚本,思路是,每5s检测一次磁盘io,当发现问题去查询mysql的processlist。
#!/bin/bash
#这个脚本用来监控磁盘IO
#作者:猿课-阿铭 www.apelearn.com
#日期:2018-12-12
if ! while iostat &>/dev/null
then
yum install -y sysstat
fi
while :
do
t=`date +%T`
iostat -xd 1 5 |grep '^sda'> /tmp/io.log
sum=`awk '{sum=sum+$NF} END {print sum}' /tmp/io.log`
a=`echo "scale=2;$sum/5"|bc`
b=`echo $a|cut -d . -f 1`
if [ $b -gt 90 ]
then
mysql -uroot -pxxxx -e "show processlist" > mysql_$t.log
fi
sleep 1
done