在 14.04+ 版本中无法将打开文件数限制提高到 999999 以上

在 14.04+ 版本中无法将打开文件数限制提高到 999999 以上

我正在尝试通过 增加 root 用户和非 root 用户的打开文件限制/etc/security/limits.conf。但是,无法超过999999,任何超过此值的值都会恢复为默认值1024,我也无法将其设置为无限制

这是我的limits.conf

* hard nofile 999999
* hard nofile 999999
root hard nofile 999999
root soft nofile 999999

以上工作正常并ulimit -n返回999999

但是,如果我将值提高一级或达到unlimited-1infinity它不起作用。ulimit -n返回1024

我在这里提到:limits.conf - pam_limits 模块的配置文件 | Ubuntu 手册页

谢谢

答案1

我知道已经晚了 10 个月,但您已经为所有用户设置了两次硬限制。将第二行更改为软限制。

* hard nofile 999999
* soft nofile 999999
root hard nofile 999999
root soft nofile 999999

完成此操作后你应该看到:

$ ulimit -n
999999
$ 

由于限制已正确定义,因此您的文件应该始终适用于 root。

此外,您不能使用 -1、无穷大、无限大或类似的值,您必须使用文字值。此值的最大支持值在内核中定义,并在 /proc/sys/fs/nr_open 中公开。在我的 centos 7 和 debian strech 环境中,我得到相同的值:

$ cat /proc/sys/fs/nr_open
1048576
$

您还必须启动新的会话才能更新限制。

答案2

为了使其正常工作,需要修改三个文件:

  • /etc/security/limits.conf
  • /etc/pam.d/common-session
  • /etc/pam.d/common-session-noninteractive

您已经在第一个文件中添加了所需的行,然后在另外两个文件中需要这一行:

session required pam_limits.so

请注意:

大多数资源都忽略了强调的一点是,负责执行进程的任何程序都很容易修改您的限制。如果 ulimit -n(以正确的用户身份运行)为您提供了您刚刚设置的数字,但 cat /proc/{process_id}/limits 仍然打印出较低的数字,则几乎可以肯定是进程管理器、初始化脚本或类似的东西弄乱了您的限制。您还需要记住,进程会继承父进程的限制。

因此,如果存在这样的过程,那么您将必须修改配置文件才能使其工作。

来源: https://underyx.me/2015/05/18/raising-the-maximum-number-of-file-descriptors

相关内容