查看文件描述符以及文件描述符的参数和修改

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

        a.    查看

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

          204196

    1.2 设置

         a.    临时性

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

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

        fs.file-max = 1000000

 

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

   2.1   查看

     $ ulimit -n

     1024

     

     ulimit -n是用来查看用户单一进程可同时打开的最大文件数,默认情况下是1024,我们通过ulimit -n 65535,可以将最大文件数修改为65535,此修改只对当前会话有效。

   当然,ulimit还有其他的用法,比如ulimit -a就能够显示系统资源的各种限制,这里就不再继续讲解,有兴趣的童鞋可以继续深入挖掘下~

   2.2 设置

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

      查看hard limit

      $ ulimit -Hn

      1700000

     注意:设置soft limit,必须小于hard limit:

     $ ulimit -Sn 1600000

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

   chanon           soft    nofile          1800000

    chanon           hard   nofile          2000000

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

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

 

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

     [root@localhost bin]# cat /proc/sys/fs/file-nr

      5504        0        204196

       第一个参数:代表已分配的文件句柄
       第二个参数:代表分配后已释放的文件句柄,现在已经不再使用
        第三个参数:代表文件句柄的最大值

 

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

   

参考文章:

https://blog.csdn.net/superchanon/article/details/13303705

猜你喜欢

转载自blog.csdn.net/lzmain/article/details/79749467