在Linux上,将最大打开文件数设置为无限制。可能吗?

20

是否可以将最大打开文件数设置为某个“无限”值,还是必须是一个数字?

我有一个要求,需要将守护进程用户的描述符限制设置为“无限”,我正在尝试确定是否可能以及如何实现。我看到一些邮件列表引用了可以使用的“max”值(例如:“myuser hard nofile max”),但迄今为止,我查阅的手册和参考资料都没有支持这种说法。

如果我不能使用'max'或类似项,我想知道如何确定文件的最大数量(理论上),这样我就有了一些基础来选择任何数字。如果有更合理的方法获得上限,我不想使用100000000之类的数字。

如果重要的话,我正在使用RHEL 5。

更新:当涉及到在limits.conf文件中进行操作时("max"将源自此处),我对问题不太熟悉。这是否会改变任何答案?


感谢这些评论。这是针对JBOSS实例而非我编写的守护程序,因此我不知道setrlimit()是否对我有用。但是,Jefromi-我确实喜欢Infinity的定义:) 我看到过一篇帖子建议文件描述符是“两个短和一个指针”,因此我应该能够计算出大概的上限。

2个回答

41

POSIX允许您使用setrlimit()RLIMIT_NOFILE资源限制设置为RLIM_INFINITY。这意味着系统不会强制执行此资源限制。当然,您仍然会受到实现(例如MAXINT)和任何其他资源限制(例如可用内存)的限制。

更新:RHEL 5对此限制在/usr/include/linux/fs.h中具有最大值1048576(220),即使是root用户也不接受任何更大的值,包括无穷大。因此,在RHEL 5上,您可以在/etc/security/limits.conf文件中使用此值,这是您能够获得的最接近无穷大的值。

不久前,应用了一个Linux内核补丁,允许将此限制设置为无穷大,但是由于意外后果已经被撤销


10
截至2015年,最近有什么变化吗? - CMCDragonkai
2
可能有用的信息:Ubuntu 14.04在/etc/security/limits.conf中也有2^20的限制。超过此限制将会重置为默认的2^10。 - Bacon
你至少可以在Centos 7中通过设置fs.nr_open来超越2^20。 - Pavel Komarov

2

尝试这行代码

<domain>    -

在最简单的情况下,将 <domain> 替换为用户名。

limits.conf 手册页面上写道:

-
    for enforcing both soft and hard resource limits together.

    Note, if you specify a type of '-' but neglect to supply the
    item and value fields then the module will never enforce any
    limits on the specified user/group etc. .

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接