tail: inotify cannot be used, reverting to polling: Too many open files
Ubuntu(AWS ec2)でApacheサーバーとTomcatサーバーを実行しています。 Tomcatの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
プロセスIDのlsofを実行したとき、5650はbash、5178は再びbash、その他はsshd、top、Apache2でした。
なぜbash、top、sshdのオープニングファイルが大量にあるのですか?これらのファイルを閉じるにはどうすればよいですか?これらのプロセスを殺すことは何か良いことをしますか?数は自然に減少しますか、それとも何かする必要がありますか?現在、tail -fで開いているファイルが多すぎることを除いて、すべてが期待どおりに機能しています。
私は多くのサーバーにtopとsshを使用しています。しかし、なぜ彼らはファイルをリリースしないのですか? OR間違ったドットを接続していますか。
おそらくあなたはinotifyの時計を使い果たしました。デフォルトでは、それはとてつもなく低い8192です。
次の方法で現在の値を確認してください。
sysctl fs.inotify.max_user_watches
次に、/etc/sysctl.conf
またはそれに含まれるファイルを編集し、以下を追加して、より合理的なものに変更します。
fs.inotify.max_user_watches = 524288
(または任意の値)そしてsysctl -p
を実行して有効にします。
Fs.inotify.max_user_instancesを増やしてみてください:
sysctl fs.inotify.max_user_instances=512
たぶんそれはUbuntuカーネルのバグかもしれません。ランチパッドバグトラッカーから this を確認してください。
そして、必要に応じてカーネルをアップグレードしてください!