Linux Linux下最大文件描述符设置

Linux下最大文件描述符设置

by:授客 QQ1033553122

 

1.   系统可打开最大文件描述符设置

查看系统可打开最大文件描述符

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

65535

 

说明:

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

 

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

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

1280    0 0 113986

 

说明:第一个数表示当前系统已分配的文件描述符数(文件句柄数),第二个数为分配后已释放的文件描述符数(当前不再使用的文件描述符数),第三个数为最大文件描述符数,等于file-max

 

 

配置可打开最大文件描述符

a) 永久配置

# vim /etc/sysctl.conf

 

在文件尾添加如下内容(假设目标大小为65535):

fs.file-max=65535

 

确保配置立即生效,执行以下命令

# sysctl -p

 

b) 临时配置

# echo 65530 > /proc/sys/fs/file-max

# sysctl fs.file-max  #查看

fs.file-max = 65530

 

或者

# sysctl -w fs.file-max=65531

 

注:临时配置,重启后就失效了

 

2.   进程可打开最大文件描述设置

查看进程可打开最大文件描述符: soft nofile

# ulimit -n

65535

 

配置进程可打开最大文件描述符

a)永久配置

添加带背景色内容

# vim /etc/security/limits.conf

……(略)

#@student        -       maxlogins       4

* - nofile 65535

# End of file

 

或者如下

# vim /etc/security/limits.conf

……(略)

#@student        -       maxlogins       4

* soft nofile 65535

* hard nofile 65535

# End of file

 

说明:

1- nofile 65535 表示同时配置soft limithard limit

2、只能在hard limit范围内修改soft limit。如上,表示进程可打开最大文件描述符数的soft limit65535hard limit65535

3、需要注销重新登录配置才会生效

4/proc/sys/fs/nr_open是单个进程可分配的最大文件数,所以在我们使用ulimitlimits.conf来配置hard limit时,如果设置的值超过/proc/sys/fs/nr_open默认值1048576需要先增大nr_open值(# vim /etc/sysctl.conf,文件末尾添加nr_open,形如fs.nr_open=100000000000

5、对于非root用户只能设置比原来小的hard limit

4.    总结:

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

c.    nofilesoft limit不能超过其hard limit

d.    nofilehard limit不能超过/proc/sys/fs/nr_open

原文地址:https://www.cnblogs.com/shouke/p/10157647.html