一、问题背景
我们的项目采用了Weblogic集群部署方式,服务器上服务四个集群实例:server01、server02、server03、server04。在每个实例上都部署了应用。
二、问题描述
某一时间点突然发现服务器磁盘空间急剧减小,而且越来越小。用df -vh命令查看后发现,安装weblogic的目录磁盘空间异常增大,但用find . -size +SOMESIZE命令逐级目录查看却发现并没有一个目录存在较大的文件。
三、问题排查过程
在查找大文件无果的条件下,我进入到Weblogic console,查看服务器状态,发现有一个实例server02的健康状况并非OK,而是warning,警告的原因为:ThreadPool has stuck threads。发现此问题后,并没有想到直接与磁盘空间异常减小的问题作关联,而是抱着试试看的态度,把server02实例的服务进行了重启。重启后执行df -vh命令,发现磁盘状态变为正常!后来才恍然大悟,原来磁盘空间之所以不断减小,是因为服务器的内存已经被消耗完,然后使用了磁盘空间做为虚拟内存。由于阻塞进行一直没有被释放,导致所用的虚拟内存(即服务器的硬盘空间)越来越大。
四、问题总结及领悟
1、在查找此类问题时,单单使用df -vh类的命令是不够的,如果能及早使用free -m查看一下空闲的内存,应该能更快地定位问题。
2、关于阻塞的线程无限制使用内存的问题详细机制,还需要进一步研究。后续有成果会及时补上。