Skip to content

Latest commit

 

History

History
30 lines (26 loc) · 1015 Bytes

81.md

File metadata and controls

30 lines (26 loc) · 1015 Bytes

题目要求

阿里云的机器,今天收到客服来的电话,说服务器的磁盘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