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


16

しようとするtail -f catalina.outと、エラーが発生します:

tail: inotify cannot be used, reverting to polling: Too many open files 

私はこの投稿で答えを試しました: 開いているファイルが多すぎます-犯人を見つける方法

lsof | awk '{ print $2; }' | sort -rn | uniq -c | sort -rn | head

上記のコマンドを実行すると、出力は

17 6115

13 6413

10 6417

10 6415

9 6418

9 6416

9 6414

8 6419

4 9 

4 8

1024個のファイルが開いているプロセスはありません。開いているファイルの数は17,13,10,10,9ではありませんか?それとも私はそれを間違って理解していますか?そして、これらはすべてbash、sshd、apache2で、Tomcatは4番でした。

私はlsof | grep tail | wc -l どちらを返しました20。これらの数字はそれほど大きくないのに、なぜtail -f catalina.out失敗するのでしょうか?

回答:


17

これは、http://peter-butkovic.blogspot.com/2013/08/tail-inotify-resources-exhausted.htmlの指示に従うことで解決しました

永続的なソリューション(再起動後も保持される)行の追加:

fs.inotify.max_user_watches=1048576

に:

/etc/sysctl.conf

制限値を恒久的に修正しました(再起動間でも)。

それから

sysctl -p

1
ファイル記述子を増やしても助けにはなりません。私のtailメッセージはわずかに異なっていました:tail: inotify resources exhausted。この答えは私を助けました。また、sudo sysctl -w fs.inotify.max_user_watches=1048576 && sysctl -p永久に変更せずに役立つかどうかをテストするためにも使用できます。この投稿はまた、nefaria.com / 2014/08 / tail
Ruslan Stelmachenko

9

答えは完全ではないと思います(システムで開くファイルの最大制限については何も言っていません)。

開いているファイルの最大数に関して2つの制限があります。

  1. プロセスごとに開くことができるファイルの最大制限。

    • 次を使用して、この制限の値を確認できます。 ulimit -n
    • 以下を使用して、この制限を変更できます。 ulimit -n new_limit_number
    • 多くのファイルを開いている上位10プロセスを取得するコマンドを次に示します。

      lsof | awk '{ print $2; }' | sort -rn | uniq -c | sort -rn | head
  2. システムごとに開くことができるファイルの最大数。

    • 次を使用して、この制限の値を確認できます。 cat /proc/sys/fs/file-max
    • 以下を使用して、この制限を変更できます。 echo new_limit_number > /proc/sys/fs/file-max
    • 開いているすべてのファイルハンドルをカウントします。 lsof | wc -l

6

おそらく、あなたはあなたのinotify時計を使い果たしました。おそらく、バックグラウンドでいくつかのファイル同期ツール(Dropboxなど)を実行していますか?

Linuxでは、ファイルの変更を監視するために、tail -fコマンドの内部実装はinotifyデフォルトでメカニズムを使用します。すべてのinotifyウォッチ(デフォルトでは8192)を使い果たした場合inotify -f、そのファイルへの変更を検出するためにポーリングに切り替える必要があります。

もちろん、inotifyウォッチの最大数を変更できます。

参照:
http:
//www.quora.com/How-is-tail-f-implemented http://peter-butkovic.blogspot.com/2013/08/tail-inotify-resources-exhausted.html
https:// serverfault.com/questions/510708/tail-inotify-cannot-be-used-reverting-to-polling-too-many-open-files


3

sysctl fs.inotify.max_user_instancesのユーザーごとの制限を取得しますinotify

私はそれを経験して、すべてのリミットシステムは広い十分に高いだったが、ユーザーによって設定は、デフォルトでは通常、比較的低い、あなたはそれを増やすことができsysctl.conf、それ聖霊降臨祭をリロードsysctl -p


3

走る

ps aux | grep tail

crontabによる生成など、実行中のテールコマンドが多すぎるかどうかを確認します。


haこれは実際に動作し、テーリング方法が多すぎます
Alexander Mills

データを変換するにはどうすればよいですか?各情報が何を意味するのか、それについて何をすべきかを説明できますか?例えば:root 20161 0.0 0.0 11132 1044 pts/0 S+ 17:27 0:00 grep tail
Christia

これは、非常に多くのプロセスが一致した場合にのみ問題であり、一致した行に「grep」が含まれるのは、コマンド自体によって生成されます。代わりに「pgrep tail」コマンドを使用してください。
tangxinfa

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.