用linux的人都頻繁碰到過一個問題:Linux磁盤滿了缸兔,好那就開始排查問題吧艇挨!
使用df -h命令
[work@jx-qa-test06 ~]$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 40G 25G 13G 68% /
tmpfs 63G 51M 63G 1% /dev/shm
/dev/sda1 190M 62M 118M 35% /boot
/dev/sda5 1.3T 276M 1.2T 100% /home
確實磁盤是滿了,于是習(xí)慣性的用du -sh * 看下是每個文件占用的空間
[work@jx-qa-test06 ~]$ du -sh *
4.0K bin
1.8G cidir
4.7G cprd
24K data
12K download
12K dubbo-registry.properties
0 dubbo-registry.properties.lock
3.8G fnrd
2.7G iprd
17G jenkins_home
du: 無法讀取目錄"local/nginx/proxy_temp": 權(quán)限不夠
du: 無法讀取目錄"local/nginx/uwsgi_temp": 權(quán)限不夠
du: 無法讀取目錄"local/nginx/fastcgi_temp": 權(quán)限不夠
du: 無法讀取目錄"local/nginx/scgi_temp": 權(quán)限不夠
du: 無法讀取目錄"local/nginx/client_body_temp": 權(quán)限不夠
222G local
4.0K nohup.out
317M nts
3.2M opbin
73M personneldata
540M qa
84K tmp
351M var
12K www
12K zk-manage
0 zk-manage.lock
16K zk-new
0 zk-new.lock
哎呀我去,好奇怪有木有蝗碎,這些文件大小加起來都沒有1.3T洒试,啥情況捌噬拧!
這就到問題的根本了!好多人認(rèn)為磁盤滿了只是因為磁盤上面的內(nèi)容多了,其實不是,磁盤滿了還有一個原因就是--“句柄”涛目。了解計算機(jī)結(jié)構(gòu)或者JVM內(nèi)存模型的人應(yīng)該知道“句柄”是個啥東西秸谢,此處就不講解了哈!
直接上干貨如何查詢機(jī)器上那些沒有用的句柄呢霹肝!
lsof -n | grep deleted
命令運行結(jié)果
[work@jx-qa-test06 ~]$ lsof -n | grep deleted
java 139634 work 39r REG 8,5 624231 5249294 /home/work/local1/jdk1.8.0_51/jre/lib/jsse.jar (deleted)
java 139634 work 40r REG 8,5 114687 5249298 /home/work/local1/jdk1.8.0_51/jre/lib/jce.jar (deleted)
java 139634 work 41r REG 8,5 249403 5249282 /home/work/local1/jdk1.8.0_51/jre/lib/ext/sunpkcs11.jar (deleted)
java 139634 work 42r REG 8,5 39773 5249285 /home/work/local1/jdk1.8.0_51/jre/lib/ext/sunec.jar (deleted)
java 139634 work 49r REG 8,5 278433 5249288 /home/work/local1/jdk1.8.0_51/jre/lib/ext/sunjce_provider.jar (deleted)
java 139634 work 56w REG 8,5 3662 88080391 /home/work/var/log/uc-personal/personal.error.log (deleted)
java 139634 work 177r REG 8,5 3500533 5249389 /home/work/local1/jdk1.8.0_51/jre/lib/resources.jar (deleted)
java 139634 work 180w REG 8,5 0 88098635 /home/work/var/log/uc-personal/personal.debug.log (deleted)
java 139634 work 188r REG 8,5 3131363 5249479 /home/work/local1/jdk1.8.0_51/jre/lib/charsets.jar (deleted)
php-fpm 172821 work 3u REG 8,2 0 1573219 /tmp/.ZendSem.0lHtLT (deleted)
mysqld_sa 181657 work 1u CHR 136,22 0t0 25 /dev/pts/22 (deleted)
mysqld_sa 181657 work 2u CHR 136,22 0t0 25 /dev/pts/22 (deleted)
mysqld 182527 work 4u REG 8,2 0 1572873 /tmp/ib8tUCSu (deleted)
mysqld 182527 work 5u REG 8,2 0 1572935 /tmp/ibA3SF6e (deleted)
mysqld 182527 work 6u REG 8,2 0 1572936 /tmp/ibpti4kZ (deleted)
mysqld 182527 work 7u REG 8,2 0 1573063 /tmp/ib37bgQK (deleted)
mysqld 182527 work 20u REG 8,2 0 1573075 /tmp/ibrLfoH5 (deleted)
所以刪掉沒用的“句柄”磁盤空間就會釋放好多了估蹄!使用kill -9 命令刪掉占用句柄的進(jìn)程就可以了!最后看一下磁盤阿迈,簡直是完美元媚。
[work@jx-qa-test06 ~]$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 40G 25G 13G 68% /
tmpfs 63G 51M 63G 1% /dev/shm
/dev/sda1 190M 62M 118M 35% /boot
/dev/sda5 1.3T 278G 981G 23% /home