• [ 总结 ] Linux 下文件描述符


    1、概述:

      文件描述符是内核为了高效管理已被打开的文件所创建的索引。是一个非负整数,用于代指被打开的文件。所有通过I/O操作的系统调用都通过文件描述符。

      文件描述符用以表明每一个被进程所打开的文件和socket

    2、文件描述符的限制:

      Linux下最大文件描述符的限制有两个:

        (1) 系统级限制:sysctl命令和proc文件系统中查看到的数值是一样的,这属于系统限制,它是限制所有用户打开文件描述符的总和

        (2) 用户级限制:ulimit命令看到的是用户级的最大文件描述符限制,也就是说每一个用户登录后执行的程序占用的文件描述符总数不得超过这个限制。

    3、修改文件描述符:

      (1)修改用户级文件描述符

        临时修改:ulimit -SHn 10240  重启失效

          [root@super ~]# ulimit -SHn 10240

          [root@super ~]# ulimit -n
          10240
        永久修改:修改 /etc/security/limits.conf  在末尾添加如下:

          test             soft    nofile          10240
          test             hard    nofile          20480

        修改完生效

        上面设置的意思是:test用户文件描述符达到10240个的时候,触发告警。
                                     test用户文件描述符达到20480个的时候,达到最高上限。

      (2)修改系统级文件描述符

        临时修改:sysctl fs.file-max=40000 或 echo 40000 > /proc/sys/fs/file-max

        [root@super ~]# sysctl fs.file-max=40000

        [root@super ~]# sysctl -a | grep fs.file-max
        fs.file-max = 40000

        

        永久生效:echo "fs.file-max=40000" >> /etc/sysctl.conf  使用 sysctl -p 修改生效,不用重启

        [root@super ~]# echo "fs.file-max=50000" >> /etc/sysctl.conf

        [root@super ~]# sysctl -p

        [root@super ~]# sysctl -a | grep fs.file-max --color
        fs.file-max = 50000

      当服务器运行,Apache、squid、Mysql、Oracle时,都需要对其进行优化调整。

  • 相关阅读:
    小程序数据库 用正则查询字符串字段/数组字段
    一键禁用Windows多余?服务
    Switch 10.1.0 无法启动软件请在home菜单中再试一次 解决方法
    算法记录
    LeetCode——面试题 10.01. 合并排序的数组
    LeetCode——98. 验证二叉搜索树
    LeetCode——55. 跳跃游戏
    LeetCode——92. 反转链表 II
    LeetCode——206. 反转链表
    LeetCode——225. 用队列实现栈
  • 原文地址:https://www.cnblogs.com/hukey/p/5227509.html
Copyright © 2020-2023  润新知