Ubuntu 16.04でinotifyウォッチのユーザー制限に達した


43

Ubuntu 16.04をインストールしたばかりで、SmartGitを起動するとこの警告が表示されます

IOException: User limit of inotify watches reached

さらに、私はこの警告を起動しtail -fます:

tail: inotify resources exhausted 

tail: inotify cannot be used, reverting to polling

Ubuntu 14.04ではこのエラーは発生しません。新しいUbuntuで使用しているアプリケーションとファイルは、以前のバージョンで使用していたものとまったく同じです。

関連する唯一の違いは、PCにハードディスクを追加し、Ubuntuのバックアップツールを構成したことです。この問題は、2番目のディスクまたはバックアップツールに関連していますか?


回答:


76

Xenialの現在のデフォルトは8192です(カーネルソースのfs / notify / inotify / inotify_user.cを参照)。これを確認するには、ファイルをstdoutに出力します。

cat /proc/sys/fs/inotify/max_user_watches
8192

たとえば、次のようにして、これを16384に2倍に増やすことができます。

echo 16384 | sudo tee /proc/sys/fs/inotify/max_user_watches

inotifyウォッチはメモリを消費することを覚えておいてください。64ビットシステムでは、ウォッチあたり約160バイトだと思います。

これを永続的に設定するには、/ etc / sysctl.confにエントリを追加します。次に例を示します。

echo fs.inotify.max_user_watches=16384 | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

..または手動で編集/etc/sysctl.conf(更新するにはルート権限が必要)してから実行sudo sysctl -p


はい、ありがとうございます。私はそれを2倍にしたので、警告はもうありません。16.384ウォッチで消費されるメモリの量(最大)私の計算では、多かれ少なかれ2.5MBが得られます。正しいですか?
アンドレア

その順序の何かと、いくらかのオーバーヘッド。それはthing.sの壮大な計画では大きすぎない
コリン・イアン・キング

(使用済み)時計のメモリ消費の可能性に関する詳細情報を次に示します。askubuntu.com/questions/154255/…
マイケル

11

上記の答えはうまく機能しますが、完全な答えを求める私の試みをここで探していた理由を説明していません-

どうして?

dropboxやgitなどのファイルを同期するプログラムは、inotifyを使用してファイルシステムの変更を通知します。制限は次の方法で確認できます-

cat /proc/sys/fs/inotify/max_user_watches

私にとっては、100000と表示されます。この制限がディレクトリ内のすべてのファイルを監視するには不十分な場合、このエラーがスローされます。


inotifyウォッチャーの量を増やす(ショートバージョン):

あなたが実行している場合はDebian、RedHatの、または他の類似のLinuxディストリビューションを、ターミナルで次のコマンドを実行します。

echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p

ArchLinuxを実行している場合は、代わりに次のコマンドを実行します(理由についてはこちらをご覧ください):

echo fs.inotify.max_user_watches=524288 | sudo tee /etc/sysctl.d/40-max-user-watches.conf && sudo sysctl --system

次に、ターミナルに貼り付け、Enterキーを押して実行します。


技術的な詳細:

Listenは、Linuxではデフォルトでinotifyを使用して、ディレクトリの変更を監視します。監視できるファイル数のシステム制限に遭遇することは珍しくありません。たとえば、Ubuntu Lucid(64bit)のinotify制限は8192に設定されています。

現在のinotifyファイルの監視制限を取得するには、次を実行します。

$ cat /proc/sys/fs/inotify/max_user_watches

この制限がディレクトリ内のすべてのファイルを監視するには不十分な場合、Listenが適切に機能するためには制限を増やす必要があります。

一時的に新しい制限を設定できます:

$ sudo sysctl fs.inotify.max_user_watches=524288
$ sudo sysctl -p

制限を永続的にしたい場合は、次を使用します。

$ echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf
$ sudo sysctl -p

Listenが文句を言い続ける場合は、max_queued_eventsとmax_user_instancesの値にも注意を払う必要があるかもしれません。

ソース:https : //github.com/guard/listen/wiki/Increasing-the-amount-of-inotify-watchers


3

既存の制限を確認し、それに基づいて要件に応じて変更できます

To Check : cat /proc/sys/fs/inotify/max_user_watches To Alter : sudo sysctl fs.inotify.max_user_watches=524288

これでエラーが解決します。

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