在CentOS上增加ulimit


18

我们有一个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。我还确保不会在.bash_profile或.bashrc中调用ulimit。

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


您是否尝试过重启?据我所知,这些设置是在系统引导期间读取的。
卡米尔2014年

您不需要为此重启。
Xavier Lucas

Answers:


14

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

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


1
然了,重新记录后仍然看不到更改。
tubaguy50035

@ tubaguy50035 fs.file-max是系统上打开文件的最大数量。这是一个硬性限制ulimit,您的情况不会在电话中反映出来。
Xavier Lucas 2014年

哦好的。那我不应该再遇到太多打开的文件了吗?
tubaguy50035

@ tubaguy50035不相关。系统硬限制将覆盖limits.conf中的任何以上数字。但是limits.conf仍然适用。您可以尝试在新会话中直接使用ulimit设置硬限制和软限制,看看是否获得相同的最大值吗?似乎有些东西会覆盖您的配置。
Xavier Lucas 2014年

它说不允许操作。我需要授予用户访问权限吗?我宁愿Web用户没有root特权。
tubaguy50035

6

正如另一位发布者所说,您需要让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,这些设置就会被设置)。这只是您可能遇到的陷阱。


我使用的是CentOS 6.5。还用部分结果更新了我的问题。
tubaguy50035
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.