设置非常大的打开文件限制的副作用



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

由于 Linux 内核将文件描述符存储为整数,这将导致内存中的某个位置有 200,000 个整数。假设每个整数四个字节小于一兆字节,在现代硬件上几乎没有任何东西。我喜欢这个答案,它解释了文件描述符如何在Unix系统中工作。

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

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

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

tl;DR 先漏,磕碰不怕

最新更新