服务器磁盘又双叒叕爆满了?被/proc占满?

又双叒叕服务器
- 前言
- 排查
- 分析
前言
继上一次文章:
MISCONF Redis is configured to save RDB snapshots, but it is currently not able to persist on disk.
通过删除tomcat下的catalina.out文件,解决了磁盘爆满的问题后。今天又双叒叕出现这个问题。。。

接着干它!
排查
用跟上次,同样的方法定位到根目录下的/proc目录。不知道/proc目录干嘛的?
参考以下文章 Linux 下的 /proc 目录介绍。
简单来说就是保存内存信息的。这说明有的进程,所占用的文件大小塞满了磁盘。
使用
ps -ef | wc -l
命令查看当前所有进程的数量。

四百多个进程 没啥问题。
再进一步看看所有进程的详细信息
ps -ef
瞪着眼睛看了半天,也没看出什么问题。。。

想了下之前并没有出现这种问题,再结合进程正常的信息。很明显这次问题出现在我删除了tomcat下的catalina.out文件以后,先去看看tomcat的日志信息,确定下是不是tomcat的问题,结果发现该文件是空的。 也就是说项目在运行,但是主日志并没有记录信息。
到这里 大概能猜出一点了:需要写日志的进程,因为某种原因无法写入到catalina.out日志文件,而进程所对应的软链接也将磁盘的资源占满。
先关闭tomcat 这一步是必须的,不然你无法确定,是哪些进程无法关闭。
进到tomcat的安装目录的bin目录下,执行关闭命令:
./shutdown.sh
再看看服务器上还有哪些tomcat的进程在执行,使用:
ps -ef|grep tomcat
输出如下

可以明显看到,除了我的ps -ef|grep tomcat命令的进程以外,还有另外的三个tomcat的进程在运行。并且都是与catalina相关的,这些应该就是占用内存的进程了,直接结束这些进程:
kill -9 进程号
挨个结束上面的进程,再次启动tomcat,发现项目运行正常。再看一下磁盘占用:
df -h
发现磁盘使用率正常就表明完事了。
分析
这次的问题应该是上次直接删除catalina.out日志文件的时候,系统里的相应进程没有结束,所以导致那个文件夹一直占用系统内存。


