如何永久设置ulimit值?


19

在Debian Wheezy上,ulimit -a给出:

open files                      (-n) 1024

我将此添加到/etc/security/limits.conf

*                hard    nofile          64000

然后重启。

而且ulimit -a仍然提供最多1024个打开的文件。有人可以对此加以说明吗?


这可能是虚拟主机吗?
丹尼斯·诺尔特2014年

不,这是一台mongodb服务器
Icu

Answers:


15

选项一: 您还没有将软限制设置得更高。

可能的解决方案:

在/etc/security/limits.conf中添加

* soft nofile 2048

用...测试

ulimit -n 2048 

选项二: 您以用户身份登录,并且在某些“配置”文件(配置文件,bashrc等)中,将软限制设置为较低的值。

可能的解决方案fe grep for etc文件夹和/或主文件夹中的ulimit。

警告:根据其中的文件/目录数量,您可能只想考虑特定的目录/文件

ps:您可能需要阅读很多类似的问题。

特别硬VS软限制

阅读此处以了解可能的其他解决方案,其中更多详细信息 打开文件过多


实际上,我试图仅将硬限制设置为64000。因此,软限制仍为1024。现在,我尝试将软限制设置为64000 + hard =72000。但是它没有用。我也尝试了“ *-nofile 64000”,但得到的结果相同。
Icu 2014年

阅读“打开文件太多”之后,我认为内核设置将覆盖limits.conf设置,但是:“ fs.file-max = 4933738”
Icu

@Icu尝试从这一个答案:serverfault.com/questions/93234/… 可能与您的shell有关
Dennis Nolte 2014年

我在/etc/pam.d/other和common-session中添加了'session required pam_limits.so',但这没有帮助...作为替代,我在初始化脚本中添加了'ulimit -n',它可以正常工作但我想知道为什么我无法在shell中获得正确的值。
Icu 2014年

20

Debian中有一个错误。要增加,ulimit您需要将此添加到/etc/pam.d/common-session文件中:

session required pam_limits.so

/etc/security/limits.conf添加:

*               soft    nofile          65535
*               hard    nofile          65535

然后重新启动系统。


1
我不需要对/etc/pam.d/common-session文件进行任何更改。它只是通过将其他两行添加到limits.conf文件中而起作用的:-)
Francesco Casula

您无需重启。
David Goodwin

这是残酷的。现在在debian 7上,这不起作用。不知道该怎么办:(-我可能会提出一个新问题
NiCk Newman

12
繁荣。*通配符不适用于root。我添加了root而不是*,并且可以正常工作。谢谢!
NiCk Newman

@FrancescoCasula-那是哪个版本的Debian?只是想弄清楚这是否真的是一个错误,并且是否仍然存在...
UpTheCreek

0

就我在Debian 10上的Apache而言,以上方法没有用,尽管这样做有效:

echo "APACHE_ULIMIT_MAX_FILES='ulimit -n 16384'" >> /etc/apache2/envvars
service apache2 restart

我检查了:

cat /proc/$pid/limits

..where $pid是其中一个Apache进程的进程ID。

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.