大量文件描述符对Java应用程序有什么影响

时间:2019-05-09 02:52:56

标签: java file-descriptor

我们在Tomcat上部署了一个Web应用程序,该应用程序可以具有超过300k的文件描述符,而单个进程的限制为250k。 奇怪的是:当服务器运行时,该数字上升(400k),而下降(100k)。有时,当数量很高时,我们无法进入操作系统。但是,我们没有发现与许多打开的文件或套接字建立问题有关的任何错误。 大多数文件描述符与JVM加载的jar文件有关。我的问题是:
1. OS(CentOS 7)如何计算tomcat的文件描述符?我认为Tomcat在运行时不会使这些文件保持打开状态。 2.为什么数量不固定?相反,有很多重复的jar文件。 3.拥有这么多文件描述符是否正常?

1 个答案:

答案 0 :(得分:1)

操作系统对任何一个进程可以同时打开的文件数量有限制。大多数发行版的默认文件只有 1024 个文件。每个打开的文件还具有关联的文件描述符。套接字连接被视为文件,它们使用文件描述符,因此受到相同的资源限制。

  1. 您可以通过命令ulimit验证或更改最大限制。

  2. 您还可以查看MBean属性的值- 通过运行JMX工具JConsole MaxFileDescriptorCount OpenFileDescriptorCount

  3. 当OpenFileDescriptorCount小于MaxFileDescriptorCount时 您的应用程序可以正常工作,否则您将得到java.io.IOException: Too many open files,这会导致您的应用程序出现故障。

  4. 通常对于应用程序,FD(文件描述符)的计数 上升/下降到一定水平。但这应该在 MaxFileDescriptorCount。