一、问题描述:
1.线上应用写大量日志,收到磁盘利用率过高的告警
2.删除大日志文件,仍然持续告警
二、根本原因:
在linux服务器上,rm -r大的日志文件后,如果使用该文件的进程没有关闭,是不会真实的释放磁盘空间的
三、排查过程
1.df -h命令查看当前服务器磁盘使用率情况,发现被使用了50G的空间,使用率搞到89%
2.查看日志文件目录下占用的总磁盘大小,发现只占用了20M的磁盘空间,并没有50G的空间大小
3.50G的空间到底去哪里了?
lsof |grep deleted 命令进行查看,发现有很多50M左右被删除了的日志文件,算了一下正好就是被使用了的50G
四、解决办法
1.重启应用,删掉进程,让链接断开,os自动清理被deleted的日志文件---这种方式需要重启应用,一般在紧急情况下使用
2.正确的做法应该是,日志文件定期转储,或软连到云盘上采用异步日志框架输出。--推荐做法