
tail: inotify cannot be used, reverting to polling: Too many open files
私は Ubuntu (AWS ec2) で Apache と Tomcat サーバーを実行しています。Tomcat を tail しようとすると、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
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カーネルのバグかもしれないので確認してくださいこれLaunchpad バグトラッカーから。
必要に応じてカーネルをアップグレードしてください。