열린 파일의 file-nr 및 lsof 개수가 다른 이유는 무엇입니까? [닫은]


19

나는 갑자기 문제에 봉착했다. 내 모든 응용 프로그램과 서버가 정상적으로 실행 중이며 갑자기 열려있는 파일 수가 나타납니다.

이 명령으로 확인하고 있습니다.

cat /proc/sys/fs/file-nr

이것을 확인하면이라고 표시 44544 0 128000되므로 44544는 열린 파일 수입니다.

그러나이 명령으로 확인하면 lsof | wc -l -28384가 표시됩니다.

어느 것이 맞습니까?

내 최대 열린 파일 제한은 65535입니다

ulimit -a
open files                      (-n) 65535

더 많은 열린 파일을 사용하는 상위 5 개 프로세스를 알고 싶습니다. 나는 이것을 얻을 수 lsof있지만 여기에 표시된 수는 위에서 언급 한 다른 명령과 매우 다릅니다.

이 명령으로 계산 된 프로세스의 세부 정보를 얻을 수 있습니까 cat /proc/sys/fs/file-nr?

아래 언급 된 링크에 따르면 우리는 수 없습니다. 열린 파일 설명자를 표시하지만 lsof 명령을 사용하지 않는 방법

나를 위해 해결 방법이 있습니까? 더 많은 열린 파일을 사용하기 시작한 프로세스를 갑자기 찾아야합니다.

업데이트 문제로 죄송합니다. 내가하고있는 실수는 루트에서 lsof | wc -l을 확인하지 않는 것을 발견했습니다. 그것이 제가 큰 차이를보고있는 이유입니다.

여전히 파일 -nr과 lsof의 출력에는 차이가 있습니다. wc -l (루트에서). lsof count가 파일 -nr count보다 큽니다. 이것의 이유는 파일 -nr은 Google 자체에 대한 작은 연구 로이 이유를 찾은 일부 디렉토리 (lsof에서 파일로 간주)를 무시합니다. 어쨌든! 모든 도움을 주셔서 감사합니다.



되어 lsof | wc -l 정말 부정적인 번호를 보여?
Joe Sewell

3
그것은 음의 부호가 아니며 하이픈입니다!
Vasanth Nag KV

답변:


8

여기에는 두 가지 질문이 있습니다. 먼저 file-nr 및 file-max 구조에 대한 전체 설명서를 찾을 수 있습니다.

https://www.kernel.org/doc/Documentation/sysctl/fs.txt

이는 해당 파일의 필드를 다음과 같이 정의합니다.

file-nr의 세 값은 할당 된 파일 핸들 수, 할당되었지만 사용되지 않은 파일 핸들 수 및 최대 파일 핸들 수를 나타냅니다. Linux 2.6은 항상 0을 사용 가능한 파일 핸들 수로보고합니다. 이는 오류가 아니며 할당 된 파일 핸들 수가 사용 된 파일 핸들 수와 정확히 일치 함을 의미합니다.

잘만되면 충분합니다. 두 번째 질문은 위에서 언급 한 스레드에서 답변되었습니다 ( /server/485262/number-of-file-descriptors-different-between-proc-sys-fs-file-nr-and-proc- pi ) 중 하나에 해당하는 것으로 보입니다

  1. 프로세스에서 사용중인 파일 디스크립터를 근사화해야하는 경우 "lsof 사용"및 출력을 적절하게 필터링하십시오.
  2. 파일 디스크립터 사용 시점에 스냅 샷을 작성하려면 / proc 파일 시스템을 통과하고 여전히 출력을 필터링해야합니다.

특정 지점에서 사용중인 FD의 수가 시스템에서 매우 빠르게 변동될 수 있기 때문에 이에 대한 정확한 메트릭을 얻는 데 어려움이 있습니다.

다음 스레드는 'lsof'접근 방식에 대한 필터링 체계를 제안합니다.

/server/396872/why-or-how-does-the-number-of-open-file-descriptors-in-use-by-root-exceed-ulim


내 질문을 업데이트했습니다. 그러나 모든 정보를 주셔서 감사합니다.
Vasanth Nag KV

그러나 내가 이미 1545를 가지고 있다고 말하면 ulimit최대 1024 개의 파일을 열 수 있다고 말하는 것보다 어떻게 가능 lsof | wc -l합니까?
Nakilon

에 대한 매뉴얼 페이지 읽어주십시오 lsofulimit질문에 대한 답변을.
토마스 N
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.