我使用的是带有tomcat 9.0.24的linux服务器。当我停止tomcat服务器时,下面的输出将返回'lsof \ wc -l‘命令
fdmt@fdm-3-136 apache-tomcat-9.0.24]$ lsof | wc -l
1203
fdmt@fdm-3-136 apache-tomcat-9.0.24]$如果启动tomcat服务器,“lsof”命令将返回大量打开的文件。请参阅下面的输出段。
[fdmt@fdm-3-136 apache-tomcat-9.0.24]$ lsof | wc -l
1203
[fdmt@fdm-3-136 apache-tomcat-9.0.24]$ ./bin/startup.sh
Using CATALINA_BASE: /usr/local/tbx/fdmt/apache-tomcat-9.0.24
Using CATALINA_HOME: /usr/local/tbx/fdmt/apache-tomcat-9.0.24/
Using CATALINA_TMPDIR: /usr/local/tbx/fdmt/apache-tomcat-9.0.24/temp
Using JRE_HOME: /usr/local/java/jdk1.8.0_271/jre
Using CLASSPATH: /usr/local/tbx/fdmt/apache-tomcat-
9.0.24//bin/bootstrap.jar:/usr/local/tbx/fdmt/apache-tomcat-9.0.24/bin/tomcat-juli.jar
Tomcat started.
[fdmt@fdm-3-136 apache-tomcat-9.0.24]$ lsof | wc -l
30492
[fdmt@fdm-3-136 apache-tomcat-9.0.24]$这个数值一直在缓慢增长。我使用的是红帽企业Linux (VERSION=7.0),有人会面临同样的问题吗?如果这个问题有任何解决办法,请提出建议。
发布于 2021-04-21 04:42:34
我在@A.BS的回答中找到了上述问题的原因,我在两个Linux服务器中启动tomcat实例后比较了lsof的输出。一个服务器返回大值(与我最初的问题相关),而第二个服务器返回的值总是小于2000。
造成这一问题的原因是在两个服务器中都有两个不同版本的“lsof”。(4.82和4.87)最新版本包括与线程相关的结果。
lsof 4.82:(无工贸署栏)

lsof 4.87:(有TID栏)

因此,如果有100个线程将显示100次相同的文件打开,(正如@A.B所提到的),这将只算作一个打开的文件。但是| wc -l返回不同线程的重复行数。(确实不正确)
https://unix.stackexchange.com/questions/645913
复制相似问题