tail: inotify は使用できません。ポーリングに戻ります: 開いているファイルが多すぎます

tail: inotify は使用できません。ポーリングに戻ります: 開いているファイルが多すぎます
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 バグトラッカーから。

必要に応じてカーネルをアップグレードしてください。

関連情報