我需要检查 Java 进程打开的文件描述符的数量。 lsof 的输出几乎有 40000 行长。这只是开始:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 12003 jboss cwd DIR 253,7 4096 1835012 /obcdn/Jboss/bin
java 12003 jboss rtd DIR 253,0 4096 2 /
java 12003 jboss txt REG 253,7 7336 2621459 /obcdn/java1.8/bin/java
java 12003 jboss mem REG 253,2 111080 171382 /usr/lib64/libresolv-2.17.so
java 12003 jboss mem REG 253,2 27776 133531 /usr/lib64/libnss_dns-2.17.so
java 12003 jboss mem REG 253,7 278078 1966631 /obcdn/Jboss/modules/system/layers/base/org/yaml/snakeyaml/main/snakeyaml-1.15.0.redhat-1.jar
java 12003 jboss mem REG 253,7 360979 1835896 /obcdn/Jboss/modules/system/layers/base/org/apache/james/mime4j/main/apache-mime4j-0.6.0.redhat-5.jar
java 12003 jboss mem REG 253,7 32957 1835471 /obcdn/Jboss/modules/system/layers/base/com/fasterxml/jackson/jaxrs/jackson-jaxrs-json-provider/main/jackson-module-jaxb-annotations-2.5.4.redhat-1.jar
java 12003 jboss mem REG 253,7 28742 1835469 /obcdn/Jboss/modules/system/layers/base/com/fasterxml/jackson/jaxrs/jackson-jaxrs-json-provider/main/jackson-jaxrs-base-2.5.4.redhat-1.jar
java 12003 jboss mem REG 253,7 16843 1835470 /obcdn/Jboss/modules/system/layers/base/com/fasterxml/jackson/jaxrs/jackson-jaxrs-json-provider
所以看来该进程正在使用几乎 40000 个文件描述符,这似乎有点太多了,而且我担心的是 ulimit -a 显示了打开文件的最大数量
open files (-n) 40000
只是为了确认我的分析:lsof 输出的每一行实际上是打开的 FD,还是应该以某种方式 grep 输出以获得正确的计数?谢谢
答案1
mem
不是FD,他们来自mmap()
.所以我想grep -v " mem "
确定一下。 cwd
、rtd
、 和txt
也不是 FD,但应该各有一个,因此它们不会对您的数字产生非常显着的影响。