目录

 

​​系统级别​​

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

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

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

​​永久配置​​

​​临时配置​​

​​进程级别​​

​​查看进程可打开最大文件描述符: 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 目录下,查看某个进程的资源限制,如下所示:

# cat limits
Limit Soft Limit Hard Limit Units
Max cpu time unlimited unlimited seconds
Max file size unlimited unlimited bytes
Max data size unlimited unlimited bytes
Max stack size 10485760 10485760 bytes
Max core file size unlimited unlimited bytes
Max resident set unlimited unlimited bytes
Max processes 655350 655350 processes
Max open files 1024000 1024000 files
Max locked memory unlimited unlimited bytes
Max address space unlimited unlimited bytes
Max file locks unlimited unlimited locks
Max pending signals 1290490 1290490 signals
Max msgqueue size 819200 819200 bytes
Max nice priority 0 0
Max realtime priority 0 0
Max realtime timeout unlimited unlimited us

总结

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

b. nofile的soft limit不能超过其hard limit;

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