tail:inotify 无法使用,恢复轮询:打开的文件过多

tail:inotify 无法使用,恢复轮询:打开的文件过多
tail: inotify cannot be used, reverting to polling: Too many open files

我在 Ubuntu (AWS ec2) 上运行 apache 和 tomcat 服务器。每当我尝试 tail 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 内核错误,请检查来自启动板错误跟踪器。

如果需要的话,升级你的内核!

相关内容