Linux 'lsof' 명령이 큰 값을 반환함

Linux 'lsof' 명령이 큰 값을 반환함

저는 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]$

이 값은 서서히 증가하고 있습니다. 저는 Red Hat Enterprise Linux Server(VERSION=7.0)를 사용하고 있습니다. 같은 문제를 겪고 있는 분 계십니까? 이 문제에 대한 해결책이 있습니까?

답변1

위 문제의 원인을 찾았습니다@AB답변. 두 Linux 서버에서 tomcat 인스턴스를 시작한 후 "lsof" 출력을 비교했습니다. 한 서버는 (원래 질문과 관련하여) 더 큰 값을 반환하는 반면, 두 번째 서버는 항상 2000보다 작은 값을 반환합니다.

두 서버에 "lsof"의 두 가지 버전이 있기 때문에 문제가 발생합니다. (4.82 및 4.87) 최신 버전에는 스레드 관련 결과가 포함되어 있습니다.

lsof-4.82: (TID 열 없음) 여기에 이미지 설명을 입력하세요.

lsof-4.87: (TID 열 있음) 여기에 이미지 설명을 입력하세요.

따라서 동일한 파일이 100번 열린 것을 표시하는 100개의 스레드가 있는 경우(@AB가 언급한 대로) 이는 열린 파일 1개로만 계산됩니다. 그러나 | wc -l다른 스레드에 대한 중복 행 수를 반환합니다. (이것은 실제로 잘못된 것입니다)

관련 정보