增加 CentOS 上的 ulimit

增加 CentOS 上的 ulimit

我们有一个 CentOS 盒子,我正在尝试增加用户可以打开的最大文件数。目前,当我运行时,ulimit -Sn我得到1024ulimit -Hn给出4096。我需要这个数字达到 6000 左右。

在 中/etc/sysctl.conf我已设置fs.file-max = 100000。在 中/etc/security/limits.conf我有以下设置:

username soft nofile 6000
username hard nofile 65535

我已注销并重新登录,username但仍未看到我的更改。我需要做什么才能更改此值?

我所拥有的只是/etc/security/limits.d90-nproc.conf我还确保了 ulimit 不会在我的 .bash_profile 或 .bashrc 中被调用。

当我运行它时,sysctl -p它会输出我想要的设置,并显示fs.file-max我想要的值。但是当我运行时ulimit -Sn,我得到 1048。如果我尝试运行,sysctl --system我会得到error: Unknown parameter "--system"

答案1

强制/etc/sysctl.conf再次读取运行sysctl -p

文件/etc/security/limits.conf由登录 shell 读取,如果在 GUI 中,您应该关闭活动会话窗口。对于远程登录,它在重新登录时生效。

答案2

正如另一位发帖者所说,您需要让 sysctl 在正在运行的内核中设置该值。有几种方法可以在不重新启动的情况下设置该值:

sysctl -p /etc/sysctl.conf
sysctl -w fs.file-max=100000
sysctl --system

我认为最后一种方法是最好的,因为它复制了启动期间应用设置的顺序(因此如果有冲突就会变得明显)。

注意:我不确定您使用的是哪个版本的 CentOS,但至少在 7 上我遇到了一个问题,如果 dracut 出于任何原因(例如安装新的内核模块时)重建 initramfs,它会将 /etc/sysctl.* 的内容复制到 initramfs 中,然后由 systemd-sysctl 在该阶段执行,即使您后来从 /etc/sysctl.conf 中删除这些条目。

在我的环境中,我编辑了 systemd dracut 模块以从该环境中排除 /etc/sysctl.*(因为一旦 rootfs 挂载并且 systemd-sysctl 再次运行,这些设置就会被设置)。这只是您可能会遇到的一个问题。

相关内容