zoukankan      html  css  js  c++  java
  • Linux最大打开文件描述符数

    1.    系统最大打开文件描述符数:/proc/sys/fs/file-max

      a. 查看

        $ cat /proc/sys/fs/file-max

        186405

    2. 设置

      a. 临时性

        $ echo 1000000 > /proc/sys/fs/file-max

      b. 永久性:在/etc/sysctl.conf中设置

        fs.file-max = 1000000

     

    2.    进程最大打开文件描述符数:user limit中nofile的soft limit

      a. 查看

        $ ulimit -n

        170000

      b. 设置

        1).    临时性:

          通过ulimit -Sn设置最大打开文件描述符数的soft limit,注意soft limit不能大于hard limit(ulimit  -Hn可查看hard limit),另外ulimit -n默认查看的是soft limit,但是ulimit -n 180000则是同时设置soft limit和hard limit。对于非root用户只能设置比原来小的hard limit。

          (1)查看hard limit:

            $ ulimit -Hn

            170000

          (2)设置soft limit,必须小于hard limit:

            $ ulimit -Sn 160000

        2).    永久性:

          上面的方法只是临时性的,注销重新登录就失效了,而且不能增大hard limit,只能在hard limit范围内修改soft limit。若要使修改永久有效,则需要在/etc/security/limits.conf中进行设置(需要root权限),可添加如下两行,表示所有用户最大打开文件描述符数的soft limit为102400,hard limit为104800。以下设置需要注销之后重新登录才能生效:

          在/etc/security/limits.conf中添加如下内容:

          * soft nofile 102400

          * hard nofile 104800

          注意:设置nofile的hard limit还有一点要注意的就是hard limit不能大于/proc/sys/fs/nr_open,假如hard limit大于nr_open,注销后将无法正常登录。

          可以修改nr_open的值:

          # echo 200000 > /proc/sys/fs/nr_open

     

    3.    查看当前系统使用的打开文件描述符数

      $ cat /proc/sys/fs/file-nr

      5664        0        186405

      其中第一个数表示当前系统已分配使用的打开文件描述符数,第二个数为分配后已释放的(目前已不再使用),第三个数等于file-max。

     

    4.    总结:

      a.    所有进程打开的文件描述符数不能超过/proc/sys/fs/file-max

      b.    单个进程打开的文件描述符数不能超过user limit中nofile的soft limit

      c.    nofile的soft limit不能超过其hard limit

      d.    nofile的hard limit不能超过/proc/sys/fs/nr_open

  • 相关阅读:
    php高效率写法
    php经典bug
    cideogniter部署到阿里云服务器出现session加载错误
    linux gcc编译protocol
    linux权限问题
    http协议详解
    哈希表
    c语言函数
    socket相关函数
    构建之法阅读笔记05
  • 原文地址:https://www.cnblogs.com/fsw-blog/p/4543914.html
Copyright © 2011-2022 走看看