Linux下最大文件描述符设置
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 limit和hard limit
2、只能在hard limit范围内修改soft limit。如上,表示进程可打开最大文件描述符数的soft limit为65535,hard limit为65535
3、需要注销重新登录配置才会生效
4、/proc/sys/fs/nr_open是单个进程可分配的最大文件数,所以在我们使用ulimit或limits.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 limit中nofile的soft limit
c. nofile的soft limit不能超过其hard limit
d. nofile的hard limit不能超过/proc/sys/fs/nr_open