阿里云的机器,今天收到客服来的电话,说服务器的磁盘io很重。于是登录到服务器查看,并没有发现问题,所以怀疑是中断性地。正要考虑写个脚本的时候,幸运的到去显示进程列表,但未发现有问题的副本。原来只是一瞬间。只好继续来写脚本,想法是,每5s检测一次磁盘io ,当发现问题去查询mysql的进程列表。
核心要点
iostat -xd [时间间隔] [次数]
查看磁盘IO情况。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19$ iostat -xd 1 1
Linux 3.10.0-1062.1.1.el7.x86_64 (kun01) 2020年02月25日 _x86_64_ (1 CPU)
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sda 0.00 0.05 0.44 0.38 13.69 4.34 44.01 0.00 0.63 0.62 0.65 0.43 0.04
sdb 0.00 0.00 0.03 0.00 0.61 0.02 43.47 0.00 0.66 0.50 2.57 0.41 0.00
scd0 0.00 0.00 0.00 0.00 0.02 0.00 90.96 0.00 1.30 1.30 0.00 1.00 0.00
dm-0 0.00 0.00 0.38 0.24 11.27 3.24 46.57 0.00 0.69 0.63 0.79 0.44 0.03
dm-1 0.00 0.00 0.00 0.00 0.05 0.00 46.29 0.00 0.33 0.33 0.00 0.25 0.00
dm-2 0.00 0.00 0.07 0.15 2.55 1.07 33.13 0.00 0.70 0.62 0.74 0.40 0.01
#每秒显示一次 -x磁盘详细情况 -d只显示磁盘情况 %util表示用于操作io的时间比 越高越超负荷
#-c只显示磁盘情况 %iowait不是CPU等待输入输出完成时间的百分比 越高表示IO有瓶颈 %idle表示CPU空闲时间百分比 越高越有空
$ iostat -c 1 1
Linux 3.10.0-1062.1.1.el7.x86_64 (kun01) 2020年02月25日 _x86_64_ (1 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.39 0.01 0.49 0.01 0.00 99.11
bc命令结果是.开头使用awk格式化输出1
2$ echo .51|awk '{printf "%.2f",$0}'
0.51 # .51 --> 0.51
代码内容
1 |
|