우리는 각 호스트가 주어진 시간에 수십만 개의 파일을 여는 Apache Cassandra 클러스터를 실행합니다 .
우리는 주기적으로 열린 파일 수를 얻고이 숫자를 흑연 에 넣을 수 있기를 원 하지만 , lsof
아래 collectd
에서 실행 하면 그 동안 완료하고 막대한 양의 CPU를 씹는 데 몇 분이 걸립니다. .
lsof가 제공하는 것과 동일한 데이터를 얻거나 CPU에 눈에 띄지 않는 lsof를 실행하는 다른 방법과 친근한 방법이 있는지 궁금합니다. (이 후자의 방법은 현재보다 더 오래 걸리는 것으로 가정하지만 이상적이지 않습니다).
아마도 커널은 열려있는 파일 수를 포함하는 어딘가에 변수를 유지합니까? 소원 생각?
최신 정보:
답변 중 하나에 대한 응답으로 우리는 이미 -b
and -n
플래그를 사용하고 있습니다. 아래에서 실행중인 전체 명령은 다음과 같습니다 collectd
.
sudo lsof -b -n -w | stdbuf -i0 -o0 -e0 wc -l
/proc/{{number}}/fd/5': No such file or directory find:
-find : / proc / {{number}} / fdinfo / 5 ': 그런 파일이나 디렉토리가 없다-Q @ Benoît 어떻게 피할 수 있을까?