tail:無法使用inotify,恢復輪詢:開啟的檔案太多

tail:無法使用inotify,恢復輪詢:開啟的檔案太多
tail: inotify cannot be used, reverting to polling: Too many open files

我在 Ubuntu (AWS ec2) 上運行 apache 和 tomcat 伺服器。每當我嘗試追蹤catalina.outtomcat 時,我都會收到太多開啟的檔案。不過我可以使用 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,檢查一下來自啟動板錯誤追蹤器。

如果需要的話升級你的核心!

相關內容