【快速解决服务器磁盘空间爆满问题】

项目场景:

一个老项目,部署在weblogic上。


问题描述

正式环境的程序忽然报错出现异常,所有功能都不能使用,程序直接宕掉了。


原因分析:

经排查发现服务器的磁盘空间竟然满了,仅剩几十k,虽然有些莫名其妙,但是先恢复正式环境才是最要紧的。所以优先释放磁盘空间,启动程序。


解决方案:

释放磁盘空间:
1、查看磁盘空间使用情况

df -h

2、查看磁盘上大于100M的文件

find / -type f -size +100M

3、删除非必要文件,如程序日志等,

rm -rf  XX.log

在清理文件的过程中,发现这个程序每天都会打印大量的日志,平均5分钟就会有更新一个日志文件。(一个隐患,当时没当回事)。
清理完日志之后,空间也就释放了几个G左右,还有几十个G被不明程序占用着!我这个小菜鸟彻底傻眼了,什么鬼?!
于是乎,又开始了新一轮的排查。
经过我不(百)懈(度)努(搜)力(索),终于找到了原因!
原来是程序日志更新太快,有些日志文件虽然从目录中删除了,但是仍然留在磁盘上,程序还一直在往文件里打印日志,所以空间一直被占用。想要释放这些空间,一定要把这些已删除的文件彻底删除掉。

1、使用lsof命令查看服务器上已被删除的文件

lsof | grep delete

2、果不其然,那些已删除文件全都被同一个线程占用着,文件量之多够我翻好几页!
快刀斩乱麻,直接用kill命令杀掉这个进程。(11111为例子,改成你的进程号)

kill -9 11111

3、再次使用lsof查看已删除的文件,发现这些文件已被彻底删除,df -h查看空间,所有空间已被释放!搞定!

说明:这个进程号其实就是部署程序的server的进程号,也就是正在运行的程序在往一些不在目录上的日志文件打印日志,如果出现这个问题,可以kill这个进程,也可以在weblogic控制台手动停止server,然后重启server,重启程序就可以啦。

后记:
还记得之前说的隐患吗,这个程序打印的日志太多了,kill进程虽然能短暂的释放磁盘空间,但是没根本上解决问题,过一两个月磁盘空间又会爆满。
时隔半年之后,倒霉的我又遇到了这个问题,并且这次kill进程并不能解决问题了!
查大文件也没查到!
本菜鸟只好摇人解决问题!
万幸,大佬不愧是大佬,一招搞定!
具体是这样操作的,
大佬初步判定还是老问题,也就是日志问题,在听我说完查不到大文件之后,大佬切到了weblogic用户。。。。。
那一瞬间我醍醐灌顶,我怎么就没想到呢!当初在服务器上装weblogic时是单独开放了一个新用户权限(weblogic),我之前在root用户下查大文件怪不得查不到!
所以,在此提醒各位,以后出现类似问题,记得切换用户看一下。

大佬切换用户之后,在weblogic相关的某个文件夹下发现了大量堆积日志,正是我那消失的几十个G空间!
大佬在研究日志之后决定还是得从根源解决问题,根本原因就是这个程序使用的框架中,在某个类的某个方法里有一行日志打印代码,也就是这行代码导致每秒都有大量日志打印。
解决方式:复制该类,重写该方法,去掉那行日志打印代码。
重启程序发现日志量大大减少,至此,问题全部解决!

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值