美文网首页
无法释放文件句柄导致机器磁盘告警问题解决

无法释放文件句柄导致机器磁盘告警问题解决

作者: langlyyy | 来源:发表于2021-06-23 15:46 被阅读0次

    解决无法释放句柄问题概要
    df -h查看空间情况
    du -sch * 查看空间文件目录占用情况
    lsof |grep deleted 查看未释放句柄的文件
    ps -axuf |grep <PID> 根据lsof出来的PID执行,PID一般是第二列的数字
    kill -9 <PID> 杀死未释放空间的进程,这个谨慎执行,有重启命令执行重启命令,没有重启命令,kill掉服务后要拉起来,避免影响业务。kill之中不知道怎么重启的,买好车票。

    某天钉钉监控收到某个磁盘空间告警


    image.png

    登录机器上,df -h 看到某个目录占用达到了96%

    image.png

    进入这个目录里面,执行 du -sch * ,查看目录内的文件大小,但整个目录占用只有 58G,跟上面的380G差异较大,

    image.png

    这时候想到了,可能是因为这个目录有文件句柄没有释放导致的,所以执行 lsof |grep deleted查看是否有未有释放的句柄

    image.png

    可以看到 /xxx-git 目录下有4个文件显示是 deleted 的,说明该文件已经删除了,但句柄没有释放,导致一直在占用这空间,可以直接kill 这个进程进行空间释放

    lsof |head -1
    COMMAND PID TID USER FD TYPE DEVICE SIZE/OFF NODE NAME
    lsof输出各列信息的意义如下:
    COMMAND:进程的名称
    PID:进程标识符
    PPID:父进程标识符(需要指定-R参数)
    USER:进程所有者
    PGID:进程所属组
    FD:文件描述符,应用程序通过文件描述符识别该文件。
    ————————————————

    执行 ps -axuf |grep PID , PID为上图对应的进程ID,可以看出是由于下面这两个服务导致,对这两个服务进程重启即可释放空间

    
    root@zhc-netmis-jenkins-ftp-pro-2:/tmp# ps -axuf |grep 340253
    
    root     467520  0.0  0.0  14700  1016 pts/0    S+   14:39   0:00                          \_ grep --color=auto 340253
    
    root     340253  0.3  0.0   9184  2412 ?        S     2020 1478:17 inotifywait -mrq -e modify,delete,create,attrib /abcd-git/product_lib/
    
    root@xxxxxx-ftp-pro-2:/tmp# ps -axuf |grep 348280
    
    root     340280 46.0  0.1  46892  8280 ?        R     2020 171480:34 perl /usr/bin/parallel -j 1 /bin/bash ./commond.txt
    
    
    image.png

    怎么重启这一步,我这里忽略,因为每个人的情况都不一样,跟着这边的服务是不一样的,总结出的方法就是 重启这个PID对应的服务,如果有重启脚本或者可以执行systemctl 重启的,最好不要直接kill, 直接kill的前提是,你知道这个服务是做什么的,kill之后应该怎么拉起,知道kill后的影响是什么才进行kill

    相关文章

      网友评论

          本文标题:无法释放文件句柄导致机器磁盘告警问题解决

          本文链接:https://www.haomeiwen.com/subject/gypbyltx.html