
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
어쩌면 우분투 커널 버그일 수도 있습니다. 확인해 보세요.이것런치패드 버그트래커에서.
그리고 필요한 경우 커널을 업그레이드하십시오!