【问题标题】:Side effect of setting a very large open file limit?设置非常大的打开文件限制的副作用?
【发布时间】:2018-04-21 20:57:23
【问题描述】:

我们有一个需要打开许多文件的 java 服务。之前我们将打开文件的限制设置为 100,000。事实证明,这还不够。我们正在考虑将这个数字设置为 200,000。我想知道设置大量打开文件的缺点是什么。

【问题讨论】:

    标签: java file linux-kernel ulimit


    【解决方案1】:

    由于 Linux 内核将文件描述符存储为整数,这将导致内存中某处有 200,000 个整数。假设每个小于 1 兆字节的整数有四个字节,这在现代硬件上几乎没有。我喜欢this answer,它解释了文件描述符在 Unix 系统中的工作原理。

    限制是阻止恶意进程占用所有资源。如果您有正当理由打开 200,000 个文件,这不是问题。

    【讨论】:

      【解决方案2】:

      您应该做的第一件事是调查资源泄漏。很有可能您不需要同时需要那么多文件,但该应用程序只是随着时间的推移泄漏文件描述符。有限制的很大一部分是在它杀死机器之前发现问题。

      也就是说,假设有正当理由突破限制,没有问题。现代系统很容易总共拥有数十万个打开的文件,而且毫不费力。至于将它们放在一张桌子上,这在大多数情况下也不是问题。但是,您同时打开和关闭 fds 的线程越多,您遇到的锁争用就越多,这可能会或可能不会成为问题。

      tl;dr 先调查是否有泄漏,不要害怕碰到

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-11-23
        • 1970-01-01
        • 2022-11-13
        • 2016-02-06
        • 1970-01-01
        • 2012-12-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多