我们有一个需要打开许多文件的java服务。以前我们将打开文件的限制设置为100,000。事实证明,这还不够。我们正在考虑将这个数字设定为200,000。我想知道设置大量打开文件的缺点是什么。
答案 0 :(得分:1)
由于Linux内核将文件描述符存储为整数,因此将在内存中的某处产生200,000个整数。假设每个整数有四个字节小于一兆字节,在现代硬件上几乎没有任何东西。我喜欢this answer,它解释了文件描述符在Unix系统中的工作原理。
限制是阻止流氓进程占用所有资源。如果您有合理的理由打开200,000个文件,那不是问题。
答案 1 :(得分:1)
您应该做的第一件事是调查资源泄漏。很可能你不需要同时使用那么多文件,但应用程序只是随着时间的推移泄露了文件描述符。关于拥有限制的巨大部分是关于在杀死机器之前解决问题。
那就是说,假设有合理的理由来达到极限,就没有问题。现代系统总共可以轻松拥有数十万个打开的文件,并且不会让人流连忘返。至于将它们放在一张桌子中,大部分都不是问题。但是,您同时打开和关闭fds的线程越多,您遇到的锁争用就越多,这可能会或可能不会成为问题。
tl; dr 调查首先泄漏,不要担心碰撞