我们在 Tomcat 上部署了一个 web 应用程序,它可以有超过 300k 的文件描述符,而我们对单个进程的限制是 250k。奇怪的是:当服务器运行时,数字上升(400k)和下降(100k)。有时,当数量很高时,我们无法 ssh 进入操作系统。但是,我们没有发现与许多打开文件或套接字建立问题相关的任何错误。大多数文件描述符与 JVM 加载的 jar 文件相关。我的问题是:
1. OS (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内。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句