我已经阅读了两种增加允许的打开文件计数的不同方法(如果重要的话,我正在尝试针对 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 限制时,事情通常会比遇到内核内存分配更优雅地失败限制。