
tail: inotify cannot be used, reverting to polling: Too many open files
我在 Ubuntu (AWS ec2) 上運行 apache 和 tomcat 伺服器。每當我嘗試追蹤catalina.out
tomcat 時,我都會收到太多開啟的檔案。不過我可以使用 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
當我剛剛運行 lsof 時,進程 ID: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
可能是 Ubuntu 核心 bug,檢查一下這來自啟動板錯誤追蹤器。
如果需要的話升級你的核心!