Zoc*_*ock 2 java file-descriptor
我们在 Tomcat 上部署了一个 Web 应用程序,它可以有超过 300k 的文件描述符,而我们对单个进程的限制是 250k。奇怪的是:当服务器运行时,数字会上升(400k)和下降(100k)。有时,当数字很高时,我们无法 ssh 进入操作系统。但是,我们没有发现任何与许多打开文件或套接字建立问题相关的错误。大多数文件描述符与 JVM 加载的 jar 文件相关。我的问题是:
1.操作系统(CentOS 7)如何计算tomcat的文件描述符?我认为 Tomcat 在运行时不会保持这些文件打开。2、为什么数量不固定?相反,有很多重复的 jar 文件。3. 这么多文件描述符正常吗?
操作系统对任何一个进程可以同时打开的文件数量有限制。大多数发行版的默认值仅为1024 个文件。每个打开的文件还有一个关联的文件描述符。套接字连接被视为文件,并且它们使用文件描述符,因此受到相同的资源限制。
您可以通过命令验证或更改最大限制ulimit。
您还可以通过运行 JMX 工具 JConsole查看 MBean 属性的值 - MaxFileDescriptorCount和OpenFileDescriptorCount 。
当 OpenFileDescriptorCount 小于 MaxFileDescriptorCount 时,您的应用程序可以正常工作,否则您将得到java.io.IOException: Too many open files导致应用程序故障的信息。
通常,对于应用程序来说,FD(文件描述符)的计数会上升/下降到一定水平。但它应该在 MaxFileDescriptorCount 之内。