我们在Tomcat上部署了一个web应用程序,它可以有超过300 k的文件描述符,而我们对单个进程的限制是250 K。奇怪的是:当服务器运行时,数字会上升(400 K),下降(100 K)。有时,当数字很高时,我们无法将ssh放入操作系统中。但是,我们没有发现与许多打开的文件或套接字建立问题有关的任何错误。大多数文件描述符与JVM加载的jar文件相关。我的问题是:
发布于 2019-05-09 05:13:52
操作系统对任何一个进程可以并发打开的文件数量都有限制。大多数发行版的缺省值仅为1024文件。每个打开的文件也有一个相关的文件描述符。套接字连接被视为文件,它们使用文件描述符,因此受到相同的资源限制。
ulimit验证或更改最大限制。java.io.IOException: Too many open files。发布于 2021-09-10 20:25:52
如果您查看com.sun.management.internal.OperatingSystemImpl的相应本机方法的源代码(在src/jdk.management/unix/native/libmanagement_ext/OperatingSystemImpl.c下),
/proc/self/fds下的文件描述符数,并且RLIMIT_NOFILE的值RLIMIT_NOFILE --它指定的值大于此进程可以打开的最大文件de编号。尝试(打开(2)、管道(2)、dup(2)等)若要超过此限制,请生成错误EMFILE。(历史上,这个限制在BSD上被命名为RLIMIT_OFILE。)从Linux4.5开始,这个限制还定义了一个非特权进程(一个没有CAP_SYS_RESOURCE功能的进程)可能通过跨UNIX域套接字传递到其他支持程序的文件描述符的最大数量。此限制适用于sendmsg(2)系统调用。有关更多细节,请参见unix(7)。
https://stackoverflow.com/questions/56051547
复制相似问题