Linux打开文件数量限制

Linux服务器的某些应用程序可能需要更高的打开文件描述符限制,比如:MySQL/MariaDB 服务或 Apache 网络服务器。

系统级别打开文件限制

  1. 查看当前当前值
# cat /proc/sys/fs/file-max
  1. 运行时临时修改(root用户)
# sysctl -w fs.file-max=567962
  1. 永久修改
# vi /etc/sysctl.conf

添加以下行:

fs.file-max=567962

用户需要注销并重新登录才能使更改生效。如果要立即应用限制,可以使用以下命令:

# sysctl -p

用户级别打开文件限制

  1. 查看
    查看soft limit
$ ulimit -n

查看hard limit

$ ulimit -Hn
  1. 临时设置
    通过ulimit -Sn设置最大打开文件描述符数的soft limit,注意soft limit必须小于hard limit.
$ ulimit -Sn 160000

通过ulimit -Hn设置最大打开文件描述符数的hard limit.

$ ulimit -Hn 160000

同时设置soft limit和hard limit。对于非root用户只能设置比原来小的hard limit。

$ ulimit -n 180000
  1. 永久设置
    root权限下,在/etc/security/limits.conf中添加如下两行,表示所有用户最大打开文件描述符数的soft limit为102400,hard limit为104800。
* soft nofile 102400
* hard nofile 104800
  1. 检查系统实际使用了多少文件描述符
cat /proc/sys/fs/file-nr 
9088    0       567962

/proc/sys/fs/nr_open:表示进程可以分配的文件句柄的最大数目。默认值是1024*1024(1048576)。

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

总结

  1. 所有进程打开的文件描述符数不能超过/proc/sys/fs/file-max
  2. 单个进程打开的文件描述符数不能超过user limit中nofile的soft limit
  3. nofile的soft limit不能超过其hard limit
  4. nofile的hard limit不能超过/proc/sys/fs/nr_open

你可能感兴趣的:(Linux打开文件数量限制)