目录
系统级别
查看系统可打开最大文件描述符
查看当前系统使用的打开文件描述符数
配置可打开最大文件描述符
永久配置
临时配置
进程级别
查看进程可打开最大文件描述符: soft nofile
配置进程可打开最大文件描述符
永久配置
查看实际进程的 limit 限制
总结
系统级别
查看系统可打开最大文件描述符
# cat /proc/sys/fs/file-max
65535
说明:
所有进程打开的文件描述符数不能超过/proc/sys/fs/file-max
查看当前系统使用的打开文件描述符数
# cat /proc/sys/fs/file-nr
1280 0 0 113986
说明:
第一个数表示当前系统已分配的文件描述符数(文件句柄数)
第二个数为分配后已释放的文件描述符数(当前不再使用的文件描述符数)
第三个数为最大文件描述符数,等于file-max。
配置可打开最大文件描述符
永久配置
# vim /etc/sysctl.conf
在文件尾添加如下内容(假设目标大小为65535):fs.file-max=65535;确保配置立即生效,执行以下命令
# sysctl -p
临时配置
# echo 65530 > /proc/sys/fs/file-max
# sysctl fs.file-max #查看
fs.file-max = 65530
或者
# sysctl -w fs.file-max=65531
注:临时配置,重启后就失效了
进程级别
查看进程可打开最大文件描述符: soft nofile
# ulimit -n
65535
配置进程可打开最大文件描述符
永久配置
添加带背景色内容
# vim /etc/security/limits.conf
……(略)
* - nofile 65535
# End of file
或者如下
# vim /etc/security/limits.conf
……(略)
* 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。
查看实际进程的 limit 限制
进入到 /proc/PID 目录下,查看某个进程的资源限制,如下所示:
总结
a. 单个进程打开的文件描述符数不能超过user limit中nofile的soft limit;
b. nofile的soft limit不能超过其hard limit;
c. nofile的hard limit不能超过/proc/sys/fs/nr_open;