tail: inotify cannot be used, reverting to polling: Too many open files
我在 Ubuntu (AWS ec2) 上运行 apache 和 tomcat 服务器。每当我尝试 tail 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 内核错误,请检查这来自启动板错误跟踪器。
如果需要的话,升级你的内核!