19

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

我需要将守护程序用户的描述符限制设置为“无限制”,我正在尝试确定这是否可行或如何执行。我已经看到一些邮件列表引用了一个可以使用的“最大值”(如:“myuser hard nofile max”,但到目前为止,我查阅过的手册页和参考资料并没有支持这一点。

如果我不能使用'max'或类似的,我想知道如何确定文件的最大数量(理论上)所以我选择的任何数字都有一些基础。如果有更合理的方法来获得上限,我不想使用 100000000 或其他东西。

如果它很重要,我正在使用 RHEL 5。

更新:在写问题时我是个白痴。理想情况下,我想在 limits.conf 文件中执行此操作(这是“max”的来源)。这会改变任何答案吗?


感谢您的评论。这是针对 JBOSS 实例而不是我正在编写的守护进程,所以我不知道 setrlimit() 是否对我有用。但是,Jefromi - 我确实喜欢 Infinity 的定义 :) 我看到一篇文章建议文件描述符是“两个短裤和一个指针”,所以我应该能够计算出近似的上限。

4

2 回答 2

39

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

更新: RHEL 5 的最大值为 1048576 (2 20 ) 对于这个限制 ( NR_OPENin /usr/include/linux/fs.h),并且不会接受任何更大的值,包括无穷大,即使对于 root。因此,在 RHEL 5 上,您可以使用该值,/etc/security/limits.conf这与您将要达到的无穷大一样接近。

不久前,一个 Linux 内核补丁被应用以允许将此限制设置为无穷大,但由于意外后果,它已被恢复

于 2009-07-31T15:06:54.190 回答
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. .
于 2016-07-05T11:32:28.347 回答