• Linux 文件句柄说明


    Linux 文件句柄说明

    Linux中所有的事物或资源都是以文件的形式存在,比如消息、共享内存、连接等,句柄可以理解为指向这些文件的指针。

    对于这些句柄,Linux是有数量限制的,单个进程默认可以打开的句柄数上限,可以用以下命令来查看:

    ulimit -a
    
    • 1

    查看某个进程的句柄数上限,命令是:

    ulimit -a PID
    
    • 1

    单个进程句柄数的修改(系统重启后会恢复默认值)

    ulimit -n 句柄数
    
    • 1

    永久修改单个进程句柄数

    cat >> /etc/security/limits.conf << EOF * soft nofile 102400 * hard nofile 102400 EOF
    
    • 1

    说明:修改完成后,需要重新打开终端,使用 ulimit -a 查看句柄数

    查询系统中指定进程占用的句柄数

    lsof -n | grep [PID|进程名]| wc -l
    
    • 1

    查询系系统中进程占用的句柄数

    lsof -n | awk '{print $2}' | sort | uniq -c | sort -nr | more
    
    • 1

    文件类型有以下几种:
    DIR:表示目录。
    CHR:表示字符类型。
    BLK:块设备类型。
    UNIX: UNIX 域套接字。
    FIFO:先进先出 (FIFO) 队列。
    IPv4:网际协议 (IP) 套接字。

    LINUX对能够打开的文件句柄的数量做了限制。限制是分为三个层面:系统层面,用户层面和进程层面。
    如果某个进程打开的文件句柄超过限制,再打开文件就会报错。因此,在编程时,如果进程要占用大量文件句柄的话,
    就要看看是否要调整最大可打开的文件句柄数,同时也要注意close释放掉不用的文件句柄。

    系统层面

    cat /proc/sys/fs/file-max
    
    • 1

    用户层面

    ulimit -n
    
    • 1

    进程层面

    cat /proc/PID/limits
    
    • 1

    业务层面

    最近的审核录播截图服务,任务打到服务后报 no space left on device ,磁盘占用并没有满,本次由于内核句柄限制设置较低;录播、截图服务涉及大量的文件IO,这两点就导致了超过句柄限制达到了3w,所以从这两点出发即可解决此类问题。

    内核参数我调整了一下fs.inotify.max_user_watches = 102400之前是8192
    
    • 1
  • 相关阅读:
    模拟百度网盘
    k8s 1.22.3使用持久化卷之存储类StorageClass+NFS pv动态供应
    四、网络请求与路由
    贪心算法小结
    springboot毕设项目大学实验中心教学管理系统的设计马实现 yabss(java+VUE+Mybatis+Maven+Mysql)
    uniapp 分享到朋友圈
    HMS Core热门Kit Top问题合集,你要问的,这里全都有!
    JDBC学习笔记
    【网络安全篇】php伪协议-漏洞及其原理
    OpenGL之坐标系统
  • 原文地址:https://blog.csdn.net/weixin_43874301/article/details/125565373