在 /etc/sysctl.conf 与 /etc/security/limits.conf 中设置打开文件限制有什么区别?

在 /etc/sysctl.conf 与 /etc/security/limits.conf 中设置打开文件限制有什么区别?

我已经阅读了两种增加允许的打开文件计数的不同方法(如果重要的话,我正在尝试针对 root 进行修改)。

/etc/security/limits.conf一种方法是使用以下内容更新设置:

*                soft    nofile          500000

*                hard    nofile          500000

root             soft    nofile          500000

root             hard    nofile          500000

要对活动 shell 进行设置,看起来您可以这样做ulimit -n 500000,这不需要重新启动或注销/登录,但可能需要重新启动服务(?)。


另一种选择是更新/etc/sysctl.conf

echo 'fs.file-max = 500000' >> /etc/sysctl.conf

要对活动 shell 进行设置,我们可以执行sysctl -p,并使用 进行验证sysctl fs.file-max

所以我的问题是,有什么区别?有吗?我上线了Ubuntu 14.04.2 LTS

答案1

区别在于范围以及应用方式。通过 sysctls 设置的打开文件限制适用于整个系统,而通过 设置的限制/etc/security/limits.conf仅适用于满足此处指定条件的内容。另一个主要区别是/etc/security/limits.conf限制是通过 ulimit 应用的,因此可以更容易地更改,而 sysctl 限制本质上是在内核本身中设置内存分配限制。

作为一般规则,您几乎总是想要使用/etc/security/limits.conf,即使您在那里设置通配符匹配的全局限制,因为它更可靠一些,并且当遇到 ulimit 限制时,事情通常会比遇到内核内存分配更优雅地失败限制。

相关内容