꼬리: inotify를 사용할 수 없습니다. 폴링으로 되돌리는 중: 열려 있는 파일이 너무 많습니다.

꼬리: inotify를 사용할 수 없습니다. 폴링으로 되돌리는 중: 열려 있는 파일이 너무 많습니다.
tail: inotify cannot be used, reverting to polling: Too many open files

저는 Ubuntu(AWS ec2)에서 Apache와 Tomcat 서버를 실행하고 있습니다. Tomcat 을 추적하려고 할 때마다 catalina.out열린 파일이 너무 많아집니다. 그러나 vi를 사용하여 볼 수 있습니다.

인터넷에서 검색한 후 다음 명령을 시도했습니다.

lsof | awk '{ print $2; }' | sort -rn | uniq -c | sort -rn | head

아래 결과로

 17 5650
 17 5178
 13 5972
 10 5976
 10 5974
  9 5977
  9 5975
  9 5973
  8 5978
  4 9

방금 프로세스 ID의 ls를 실행했을 때 5650은 bash이고 5178은 다시 bash였으며 나머지는 sshd, top 및 apache2였습니다.

bash, top, sshd에서 파일을 열 때 엄청나게 많은 수의 파일이 있는 이유는 무엇입니까? 이 파일을 어떻게 닫을 수 있나요? 이러한 프로세스를 종료하면 어떤 소용이 있습니까? 숫자가 저절로 줄어들까요, 아니면 따로 조치를 취해야 하나요? 현재 tail -f가 너무 많은 열린 파일을 제공한다는 점을 제외하면 모든 것이 예상대로 작동하고 있습니다.

저는 서버에 top과 ssh를 많이 사용합니다. 그런데 왜 파일을 공개하지 않는 걸까요? 아니면 내가 잘못된 점들을 연결하고 있는 걸까요?

답변1

아마도 inotify 시계가 부족했을 것입니다. 기본적으로 터무니없이 낮은 8192입니다.

다음을 통해 현재 가치를 확인하세요.

sysctl fs.inotify.max_user_watches

/etc/sysctl.conf그런 다음 포함된 파일을 편집하고 다음을 추가하여 보다 합리적인 것으로 변경합니다 .

fs.inotify.max_user_watches = 524288

(또는 어떤 값이든) 그런 다음 실행 sysctl -p하여 적용합니다.

답변2

fs.inotify.max_user_instances를 늘려볼 수 있습니다.

sysctl fs.inotify.max_user_instances=512

답변3

어쩌면 우분투 커널 버그일 수도 있습니다. 확인해 보세요.이것런치패드 버그트래커에서.

그리고 필요한 경우 커널을 업그레이드하십시오!

관련 정보