如何查找linux某个时刻磁盘io很高的原因

如何查找linux某个时刻磁盘io很高的原因,第1张

打开终端用top命令查看。输入:

1

top

#查看swap

1

2

iostat

-x

1

10#查看%util

%idle

#如果

iostat

没有要

yum

install

sysstat

1

#如果

%util

接近

100%,说明产生的i/o请求太多,i/o系统已经满负荷,该磁盘可能存在瓶颈。idle小于70%

io压力就较大了,一般读取速度有较多的wait.

1

2

3

#如果你想对硬盘做一个io负荷的压力测试可以用如下命令

time

dd

if=/dev/zero

bs=1m

count=2048

of=direct_2g

#此命令为在当前目录下新建一个2g的文件

1

欢迎追问

您好,今天有用户反映磁盘占用100%, 我通过df -ah查看到 /占用100%。

但是通过下面两行命令

cd /

for i in `ls`do du -sh $idone

查看到 /下的容量加起来至有全部空间的一半不到。

通过lsof |grep delete看到好多文件已经删除,但是还没有释放空间,重启可以解决问题,但是会造成服务器所有也不中断,通过删除进程号可以释放出空间。

cd /

for i in `lsof |grep delete |awk '{print $2}'do kill -9 $idone

完成后发现空间已释放。

楼上的各位,麻烦你们回答问题的时候看清楚别人问的是什么好吧?

1、如果是大文件占用了,那么查询大于某个值的文件的方法:

find / -size +100c -print

这是从根盘开始查找大于100字节的文件(至于字节数你当然可以自己设置)

你可以用

find / -size +100c -exec ls -l {}\

来列出文件属性。

2、如果只是因为有些应用生成的日志文件较多,长时间没有清理后占用了,这种情况最明显的标志为系统空间使用量逐步递增,每天的增量基本相差不大。那么最快捷的方式莫过于询问应用厂商要到日志存放目录后进行清理。如果找不到厂商,那只好自己动手咯,写个脚本查:

#!/bin/ksh

#####用du命令输出所有目录所占的磁盘空间大小,以G为单位#########

du -h >fs_du.log

######判断各层目录大小,查到占用量大的目录######

cat fs_du.log|while read LINE FS_USED

do

if [ $LINE -ge 10 ]

then

echo $FS_USED >>result.log

else

exit

fi

done

####查看运行结果#######

more result.log

这样你就能看到占用量比较大的目录,从而有针对性的到相应目录下检查,看到底是什么东西在占用硬盘空间了。(if [ $LINE -ge 10 ] ,这里是判断超过10G的目录,你可以修改)

3、因为人为的误 *** 作,导致了某些进程在没有执行完成的时候被kill掉了,但是缓存中的程序没有释放,仍然在运行,这会产生一些临时文件占用大量的磁盘空间资源,这种现象的特点是爆发式的增长,在很短时间内就将磁盘空间占满。解决的方法:

i、如果是因为父进程被杀除,子进程还运行导致,那么最简单,kill子进程,就会释放。

ii、如果能用ipcs确认是哪个用户的进程,那么也不困难,顺着使用ipcrm就行(这个就不一一例举了,有了命令查使用方法还是很方便的)

iii、执行进程的用户是比较关键的用户如:root用户、有实例的oracle用户、在线的生产用户等。那么建议在确认是因为共享缓存的原因导致的问题后重启服务器。

4、你已经删除了一些占用量大的文件,或者在根盘下做du -h发现占用量远远的小于130G,df的结果仍然是100%的使用率。那么基本肯定你碰到了linux的一个bug,直接重启就能解决。(当然了也不一定是bug,我碰到过那种程序在写一个日志,但是删除日志后空间不释放的问题。这个是linux本身的机制引起的,只需要停止相关的程序空间就会释放的)


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/7523828.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-06
下一篇2023-04-06

发表评论

登录后才能评论

评论列表(0条)

    保存