一次诡异的磁盘空间占用问题排查
2016-09-13 08:48
1061 查看
大半夜接到线上一服务器磁盘占用率超过90%的短信,需要立即处理。一般这种情况都是线上异常,当天日志打太多,无法自动删掉的。上来第一反应就是查我们规范java应用日志目录,居然没有文件,再查,居然连java进程都没有,原来不是java应用,不过没关系,干一年运维也不是白干的,还是有其他方法可以查的,在此记录下整个排查过程。
用
然后cd到home目录下,来看看哪个文档比较大,我最常用的命令就是
这就很诡异了,上面提示我/home目录已使用45G,实际上只用了1.9G,无果。不查大目录了,我找找到有什么大的文件,查文件,最好用的就是find命令了,因为平时不怎么用,对其参数还是不大了解,所以网上搜了一把,找到下面这条命令(果然学习还是得靠问题驱动)。
看了下监控系统,发现磁盘占用空间一直在增长,肯定一直是有什么进程在写文件,那我就看看服务器上的进程吧。 常用命令 ps、pstree 这里我先用ps看了下,出来的内容太多,不方便看,遂改用pstree,得到如下结果。
排除系统进程,看到有nginx-proxy(我司常用的包),还有一个node,我猜应该是个nodejs应用(表示完全不了解这鬼东西),
这里我查到pid是 10163,让我来看下这鬼进程在写哪些文件,使用如下命令。
这里有俩文件,末尾标示(deleted),然后想到看下别人的操作记录,发现今天同事有上来删过这俩文件,但他没有重启进程。 linux删除正在被写入的文件之后仍是会占用磁盘空间的,这也解释了开始为何我用
接下来就是如何处理磁盘空间仍被占用的问题了,只需要重启下node进程就好了,咋重启??? 我不会啊!!尴尬。。。尝试清空下该文件
峰回路转,突然在服务器上发现了重启进程的脚本,重启后再用
总结一下,如何避免以后出现类似的情况。
1.避免直接删除linux上正在写入的文件,正确做法应该是,重写覆盖该文件
2.排查耗时较长,很多命令都是现学现卖。
3.近2k服务器,虽然已有磁盘自动清理机制,但未彻底解决问题,可能还得需要一个完美的工具。
用
df -h看下是哪个分区比较大,我司应用包都是布在/home目录下的。
$ df -h Filesystem Size Used Avail Use% Mounted on /dev/xvda2 18G 5.0G 12G 30% / /dev/xvda1 247M 25M 210M 11% /boot tmpfs 7.4G 248K 7.4G 1% /dev/shm /dev/xvdb1 50G 45G 5.3G 90% /home
然后cd到home目录下,来看看哪个文档比较大,我最常用的命令就是
du -h --max-depth=1,通常可以直接找到哪个目录占空间比较大,不过今天诡异了。。
$sudo du -h --max-depth=1 40K ./***.** #这是别人的home路径,一堆账号,略去 . . . 40K ./***.** 1.9G . #所有文件占用总空间
这就很诡异了,上面提示我/home目录已使用45G,实际上只用了1.9G,无果。不查大目录了,我找找到有什么大的文件,查文件,最好用的就是find命令了,因为平时不怎么用,对其参数还是不大了解,所以网上搜了一把,找到下面这条命令(果然学习还是得靠问题驱动)。
find . -type f -size +800M查找当前目录下大于800m的文件,依旧无果,改成100m,无果。 然后不按大小,我只查有没有*.log.*的文件(有时候也是小文件太多,导致磁盘满),依旧无果,额。。。已有知识有点不够用了。
看了下监控系统,发现磁盘占用空间一直在增长,肯定一直是有什么进程在写文件,那我就看看服务器上的进程吧。 常用命令 ps、pstree 这里我先用ps看了下,出来的内容太多,不方便看,遂改用pstree,得到如下结果。
$ sudo pstree init─┬─DragoonAgent─┬─DragoonAgent │ ├─2*[DragoonAgent───10*[{DragoonAgent}]] │ ├─DragoonAgent───7*[{DragoonAgent}] │ └─DragoonAgent───2*[{DragoonAgent}] ├─aegisinc_cli───11*[{aegisinc_cli}] ├─agetty ├─atd ├─crond ├─gshelld───3*[{gshelld}] ├─irqbalance ├─lldpd───lldpd ├─6*[mingetty] ├─nginx-proxy───4*[nginx-proxy] ├─node─┬─4*[node─┬─phantomjs───3*[{phantomjs}]] │ │ └─5*[{node}]] │ ├─node───5*[{node}] │ └─5*[{node}] ├─ntpd ├─portmap ├─sshd───sshd───sshd───bash───pstree ├─staragentd─┬─staragent-core───22*[{staragent-core}] │ └─staragent-ppf─┬─logagent───12*[{logagent}] │ └─11*[{staragent-ppf}] ├─syslog-ng───syslog-ng └─udevd
排除系统进程,看到有nginx-proxy(我司常用的包),还有一个node,我猜应该是个nodejs应用(表示完全不了解这鬼东西),
pstree -p,可以显示pid的,有了pid,我们就可以查这些进程在写入哪些文件了。
这里我查到pid是 10163,让我来看下这鬼进程在写哪些文件,使用如下命令。
$ ls -al /proc/10163/fd total 0 dr-x------ 2 admin admin 0 Jul 8 19:56 . dr-xr-xr-x 7 admin admin 0 Jan 20 2015 .. lr-x------ 1 admin admin 64 Sep 12 16:16 0 -> /dev/null l-wx------ 1 admin admin 64 Sep 12 16:16 1 -> /home/admin/snapshot-kgb/logs/nodejs_stdout.log (deleted) lrwx------ 1 admin admin 64 Sep 10 01:39 10 -> socket:[178406733] ###内容有点多,删去一部分。。。。 lrwx------ 1 admin admin 64 Sep 10 01:39 15 -> socket:[150611725] l-wx------ 1 admin admin 64 Sep 9 02:33 2 -> /home/admin/snapshot-kgb/logs/nodejs_stdout.log (deleted) lrwx------ 1 admin admin 64 Sep 10 01:39 8 -> anon_inode:[eventfd] lr-x------ 1 admin admin 64 Sep 10 01:39 9 -> /
这里有俩文件,末尾标示(deleted),然后想到看下别人的操作记录,发现今天同事有上来删过这俩文件,但他没有重启进程。 linux删除正在被写入的文件之后仍是会占用磁盘空间的,这也解释了开始为何我用
du、df、find为什么查不到大文件。
接下来就是如何处理磁盘空间仍被占用的问题了,只需要重启下node进程就好了,咋重启??? 我不会啊!!尴尬。。。尝试清空下该文件
echo '' > /home/admin/snapshot-kgb/logs/nodejs_stdout.log
cat /dev/null > /home/admin/snapshot-kgb/logs/nodejs_stdout.log无果。。。。
峰回路转,突然在服务器上发现了重启进程的脚本,重启后再用
df命令查看磁盘使用率,降到10%了。
总结一下,如何避免以后出现类似的情况。
1.避免直接删除linux上正在写入的文件,正确做法应该是,重写覆盖该文件
echo ' ' > filename。
2.排查耗时较长,很多命令都是现学现卖。
3.近2k服务器,虽然已有磁盘自动清理机制,但未彻底解决问题,可能还得需要一个完美的工具。
相关文章推荐
- 记一次java程序CPU占用过高问题排查
- 记一次tomcat进程cpu占用过高的问题排查记录
- java 一次CPU占用过高问题的排查及解决
- Linux服务器Cache占用过多内存导致系统内存不足问题的排查解决
- Linux服务器Cache占用过多内存导致系统内存不足问题的排查解决
- 诡异的Linux磁盘空间被占用问题。
- 一次内存泄露问题的排查
- 一次内存泄露问题的排查
- 一次Hibernate one-to-many查询的问题排查
- 一次诡异的ssh远程时断时续问题
- 第一次遇到死锁——记一次程序卡住问题的错误排查过程
- Cache占用过多内存导致Linux系统内存不足问题排查
- IIS占用CPU百分百问题排查方案
- Cache占用过多内存导致Linux系统内存不足问题排查
- Cache占用过多内存导致Linux系统内存不足问题排查
- Linux服务器Cache占用过多内存导致系统内存不足问题的排查解决(续)
- 一次内存泄露问题的排查
- 一次内存泄露问题的排查
- HBase一次慢查询请求的问题排查与解决过程
- HBase一次慢查询请求的问题排查与解决过程