当前所在位置: 首页 > 数码科技 > 正文

解决centos7.2中磁盘iowait过高(centos7启动后盘符错位问题)

2023-05-14 本站作者 【 字体:

(一)简述

每天都收到磁盘iowait告警信息,尤其是日志服务器在进行大量的读写操作过程中,从而造成系统处于崩溃边缘,为查找磁盘iowait由于什么原因造成的以及后续的系统的优化点。centos有许多查找问题的工具,也有高级的。

I/O Wait 就是一个需要使用高级的工具来debug的问题,当然也有许多基本工具的高级用法。I/O wait的问题难以定位的原因 是因为我们有很多工具可以告诉你说I/O 受限了,但是并没有告诉你具体是哪些进程们引起的。

具体的思路如下:top 。查看由cpu一行浪费在iowait上的cpu百分比 =>iostat -x 2 5 查看某块磁盘正在被写入 => iotop 查找最高的磁盘I/O对应的进程 => lsof -p pid 查看通过一个进程打开所有文件或打开一个文件的所有进程。


(二)具体步骤如下:

(1)通过top命令来确认是否是I/O导致系统缓慢。

[root@iZ23iod5vslZ ~]# toptop - 15:38:32 up 40 days,  5:59,  3 users,  load average: 0.00, 0.01, 0.05Tasks: 128 total,   1 running, 127 sleeping,   0 stopped,   0 zombie%Cpu(s):  0.4 us,  0.2 sy,  0.0 ni, 99.2 id,  98 wa,  0.0 hi,  0.0 si,  0.1 stKiB Mem:  32520424 total, 31492136 used,  1028288 free,   412772 buffersKiB Swap:        0 total,        0 used,        0 free. 25902892 cached Mem  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                           18988 root      20   0 11.647g 3.611g   7896 S   2.7 11.6 507:57.30 java                                                                                 28 root      20   0       0      0      0 S   0.3  0.0   6:43.31 rcuos/3                                                                               1 root      20   0   49556   3412   1912 S   0.0  0.0   0:14.60 systemd                                                                               2 root      20   0       0      0      0 S   0.0  0.0   0:00.01 kthreadd                                                                              3 root      20   0       0      0      0 S   0.0  0.0   0:48.28 ksoftirqd/0                                                                           5 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0H                                                                          7 root      rt   0       0      0      0 S   0.0  0.0   0:00.83 migration/0                                                                           8 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcu_bh                                                                                9 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcuob/0                                                                              10 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcuob/1                                                                              11 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcuob/2                                                                              12 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcuob/3                                                                              13 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcuob/4                                                                              14 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcuob/5                                                                              15 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcuob/6                                                                              16 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcuob/7

从Cpu一行我们可以看到浪费在I/O Wait上的CPU百分比;这个数字越高说明越多的CPU资源在等待I/O权限.具体的解释如下:

0.4% us 用户空间占用CPU的百分比。

0.2% sy 内核空间占用CPU的百分比。

0.0% ni 改变过优先级的进程占用CPU的百分比

2% id 空闲CPU百分比

98% wa IO等待占用CPU的百分比

0.0% hi 硬中断(Hardware IRQ)占用CPU的百分比

0.0% si 软中断(Software Interrupts)占用CPU的百分比

在这里CPU的使用比率和windows概念不同,如果你不理解用户空间和内核空间,需要充充电了


(2)通过iostat -x 3 3 查看那块磁盘正在被写入。

[root@iZ23iod5vslZ ~]# iostat -x 3 3Linux 3.10.0-123.9.3.el7.x86_64 (iZ23iod5vslZ)  08/14/2017      _x86_64_        (4 CPU)avg-cpu:  %user   %nice %system %iowait  %steal   %idle           0.70    0.00    0.16    0.75    0.05   98.34Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %utilxvda              0.00    21.18    0.32   18.33     9.94   195.06    21.98     0.08    4.11   11.44    3.98   1.54   2.88xvdb              0.00    15.21    1.23    1.98    38.41    68.76    66.70     0.08   25.48    3.59   39.10   1.09   0.35xvdc              0.00     0.07    0.00    0.91     0.00    36.25    79.43     0.10  106.88   12.53  106.92   1.33   0.12avg-cpu:  %user   %nice %system %iowait  %steal   %idle           0.75    0.00    0.17    0.08    0.08   98.91Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %utilxvda              0.00     2.33    0.00    0.67     0.00    12.00    36.00     0.00    5.50    0.00    5.50   5.50   0.37xvdb              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00xvdc              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00avg-cpu:  %user   %nice %system %iowait  %steal   %idle           0.75    0.00    0.17    0.00    0.00   99.08Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %utilxvda              0.00     3.33    0.00    1.67     0.00    34.67    41.60     0.01    3.00    0.00    3.00   1.60   100.27xvdb              0.00     9.00    0.00    1.67     0.00    42.67    51.20     0.01    5.40    0.00    5.40   1.80   0.30xvdc              0.00     0.33    0.00    0.67     0.00     4.00    12.00     0.00    2.00    0.00    2.00   2.00   0.13

每隔三秒更新一次,一共打印了三次。 -x时打印出扩展选项。第一次打印的信息可以被忽略,剩下的报告,都是基于上一次间隔的时间打印出来。

上述的列子中xvda的 %util(利用率)是100.27%,有进程往磁盘中写入数据。


(3)通过iotop查找高I/O对应的进程

[root@iZ23iod5vslZ ~]# iotopTotal DISK READ :       0.00 B/s | Total DISK WRITE :      15.67 K/sActual DISK READ:       0.00 B/s | Actual DISK WRITE:       0.00 B/s  TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>    COMMAND                                                                                18793 be/4 root        0.00 B/s    3.92 K/s  0.00 %  0.00 % java -Djava.util.logging.config.file=/usr/to~p org.apache.catalina.startup.Bootstrap start18987 be/4 root        0.00 B/s    3.92 K/s  0.00 %  0.00 % cronolog /guojinbao/tomcat/logs/catalina.%Y-%m-%d.out18796 be/4 root        0.00 B/s    3.92 K/s  0.00 %  0.00 % java -Djava.util.logging.config.file=/usr/to~p org.apache.catalina.startup.Bootstrap start13193 be/4 root        0.00 B/s    3.92 K/s  0.00 %  0.00 % java -Djava.util.logging.config.file=/usr/to~p org.apache.catalina.startup.Bootstrap start    1 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % systemd --switched-root --system --deserialize 22    2 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kthreadd]    3 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [ksoftirqd/0]16388 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % AliYunDun    5 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kworker/0:0H]16390 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % AliYunDun    7 rt/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [migration/0]    8 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [rcu_bh]    9 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [rcuob/0]   10 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [rcuob/1]   11 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [rcuob/2]

从上述的例子中可以看出进程号为cronolog18987占用了大量的磁盘IO


(4)通过lsof -p pid查找由那个文件引起的IOwait

[root@iZ23iod5vslZ ~]# lsof -p 18987COMMAND    PID USER   FD   TYPE DEVICE   SIZE/OFF     NODE NAMEcronolog 18987 root  cwd    DIR 202,17      20480  2400258 /guojinbao/tomcat/logscronolog 18987 root  rtd    DIR  202,1       4096        2 /cronolog 18987 root  txt    REG  202,1      48627   152798 /usr/local/sbin/cronologcronolog 18987 root  mem    REG  202,1    2107600   132826 /usr/lib64/libc-2.17.socronolog 18987 root  mem    REG  202,1     160240   132819 /usr/lib64/ld-2.17.socronolog 18987 root    0r  FIFO    0,8        0t0 42614018 pipecronolog 18987 root    1w   CHR    1,3        0t0     1028 /dev/nullcronolog 18987 root    2u   CHR  136,0        0t0        3 /dev/pts/0 (deleted)cronolog 18987 root    3w   REG 202,17 5704875979  2400280 /guojinbao/tomcat/logs/catalina.2017-08-14.out

lsof 命令可以展示一个进程打开的所有文件,或者打开一个文件的所有进程。从这个列表中,我们可以找到具体是什么文件被写入,根据文件的大小和/proc中io文件的具体数据.

为了确认我们的怀疑,我们可以使用 /proc文件系统,每个进程目录下都有一个叫io的文件,里边保存这和iotop类似的信息

[root@iZ23iod5vslZ ~]# cat /proc/18987/io rchar: 58891582418wchar: 58891579778syscr: 46556085syscw: 46556077read_bytes: 212992write_bytes: 59580235776cancelled_write_bytes: 0

read_bytes和write_bytes是这个进程从磁盘读写的字节数。这个例子中cronolog读取了212992byte(0.2M)数据,写入了59580235776bytes(55.4G)数据到磁盘上。


(5)通过df -h /guojinbao来查看服务器那块磁盘的根目录

[root@iZ23iod5vslZ ~]# df -h /guojinbao/Filesystem      Size  Used Avail Use% Mounted on/dev/xvdb1       45G   38G  4.7G  89% /guojinbao


最后,通过以上的信息我们可以放心的说lsof的结果就是我们要查找的文件

阅读全文
相关推荐

2022年城镇平均工资出炉 2022年房地产业平均工资均为下降

2022年城镇平均工资出炉 2022年房地产业平均工资均为下降
5月9日,国家统计局发布2022年全国城镇单位就业人员平均工资数据。  2022年全国城镇非私营单位就业人员年平均工资为114029元,年平均工资最高的仍然是信息传输、软件和信息技术服务业从业人员,而从增速上看,金融业反超信息传输、软件和信息技术服务业,以同比增长15.6%的速度,位居第一。

一夜醒来欠了地铁600多万 广州地铁回应乘客欠600多万巨款

一夜醒来欠了地铁600多万 广州地铁回应乘客欠600多万巨款
网友一觉醒来发现欠了地铁600多万,这是带走了一节车厢还是请全线免费坐地铁了?记者联系上发帖网友,其表示,事情仍在处理当中。从其社交平台发布的内容来看,搭乘的应是广州地铁。  一夜醒来欠了地铁600多万  5月8日,一则“一夜醒来欠了地铁600多万”的消息,引发网友广泛关注。发帖网友“默默无闻”

雷丁汽车申请破产是怎么回事 雷丁汽车申请破产

雷丁汽车申请破产是怎么回事 雷丁汽车申请破产
近年来,经历了疫情之后,不仅仅是个人的生意越来越难做了,公司的经营也越来越困难。近日,雷丁汽车申请破产的新闻登上热搜,引起关注,一起来看看是是怎么回事。  日前,雷丁汽车集团有限公司新增一则破产审查案件。破产申请和被申请人均为雷丁汽车,经办法院为山东省潍坊市昌乐县人民法院。据公开信息,今年以来雷

巴厘岛国内出游热度并无明显下降 预计到6-7月份会迎来旺季

巴厘岛国内出游热度并无明显下降 预计到6-7月份会迎来旺季
两名中国游客在印尼巴厘岛某酒店内不幸身亡,连日来备受关注。多家旅行机构和平台工作人员表示,这几天国内咨询去巴厘岛旅游的并没有因此明显减少,根据往年情况,预计到6-7月份会迎来旺季。  百度指数显示,巴厘岛旅游的搜索指数从四月底以来呈现波动上升的趋势,相关资讯的热度也自5月3日以来急剧上涨。  据

男子蹦极庆祝离婚绳子断裂坠湖是什么情况 男子蹦极庆祝离婚绳子断裂坠湖最后怎么样了

男子蹦极庆祝离婚绳子断裂坠湖是什么情况 男子蹦极庆祝离婚绳子断裂坠湖最后怎么样了
近日,巴西一位22岁男子为了庆祝离婚去蹦极,结果绳子断裂,掉进了泻湖里。具体男子蹦极庆祝离婚绳子断裂坠湖是什么情况?男子蹦极庆祝离婚绳子断裂坠湖最后怎么样了?一起来了解。男子蹦极庆祝离婚绳子断裂坠湖是什么情况据外媒报道,巴西一位22岁男子为了庆祝离婚而去蹦极,结果绳子断裂。他从近70英尺(约21米)

生四胞胎后又怀四胞胎女子终止妊娠是什么情况 终止妊娠是什么意思

生四胞胎后又怀四胞胎女子终止妊娠是什么情况 终止妊娠是什么意思
近日,浙江一女子因为生完四胞胎又怀上四胞胎,引发广大网友的关注。网友们有的羡慕该女子多子多福,有的质疑家庭负担过重。最新消息,生四胞胎后又怀四胞胎女子决定终止妊娠。那么,生四胞胎后又怀四胞胎女子终止妊娠是什么情况?终止妊娠是什么意思?下面一起来看看。  近日,浙江一女子称生完四胞胎又怀四胞胎引发

上海20岁女子被3万卖到安徽当新娘 买方父子也双双获刑一年九个月

上海20岁女子被3万卖到安徽当新娘 买方父子也双双获刑一年九个月
拐卖人口不仅违法,而且还违背了其他的意愿,以他人生命作为交易的筹码,从而获取暴利!实在可恨!这不上海20岁女子被3万卖到安徽当新娘,买方父子也双双获刑一年九个月,想知道具体详情请看以下介绍。  上海20岁女子被3万卖到安徽当新娘  上海一20岁的女子,属于精神发育迟滞者,患有三级智力残疾,而后家

男子蹦极庆祝离婚绳子断裂坠湖 男子脖子和腰椎骨折

男子蹦极庆祝离婚绳子断裂坠湖 男子脖子和腰椎骨折
男子蹦极庆祝离婚绳子断裂坠湖是怎么回事?男子脖子和腰椎骨折是什么情况?据报道,巴西一位22岁男子为了庆祝离婚而去蹦极,结果绳子断裂。他从近70英尺(约21米)的高空掉下,最终掉进了泻湖,导致脖子和腰椎骨折以及背部和脸部等受伤,目前正在接受治疗。  男子蹦极庆祝离婚绳子断裂坠湖  5月8日消息,很

上海20岁女子被3万卖到安徽当新娘是真的吗 上海20岁女子被3万卖到安徽当新娘法律如何判

上海20岁女子被3万卖到安徽当新娘是真的吗 上海20岁女子被3万卖到安徽当新娘法律如何判
据说,上海20岁女子被3万卖到安徽当新娘?这是真的吗?据上海警方近日破获一起拐卖妇女案,即一位上海20岁女子被3万卖到安徽当新娘。那么,上海20岁女子被3万卖到安徽当新娘法律如何判?一起来了解。上海20岁女子被3万卖到安徽当新娘是真的吗2021年6月,魏先生向上海奉贤警方报案,称自己的女儿小娇很可能

官方回应一夜醒来欠地铁600多万 该网友持手机NFC卡显示异常

官方回应一夜醒来欠地铁600多万 该网友持手机NFC卡显示异常
5月8日,“一夜醒来欠了地铁600多万”的相关词条登上微博热搜,引发广泛关注和热议。发布帖子的网友“默默无闻”IP显示为广东。其表示,自己7日是能进站不能出站,服务中心半天没解决,想着也就是故障最多扣全程费用,没想到8日非但没解决,问题更严重了,“一夜醒来欠了地铁600多万,我是承包了一段地铁,
本文Tag