GNU/Linux >> Linux の 問題 >  >> Linux

カーネル inotify の監視制限に達しました

その値を上げても安全ですか?また、値が高すぎるとどうなりますか?

はい、その値を上げても安全です。以下は考えられるコストです [source]:

  • 使用済み inotify ウォッチは 540 バイト (32 ビット システム)、または 1 kB (ダブル - 64 ビット システム) [ソース:1、2] を使用します。
  • これはカーネル メモリから取得されます 、交換できません。
  • 最大値を 524288 に設定し、すべてを使用すると (ありそうもない)、32 ビット/64 ビットのカーネル メモリを約 256MB/512MB 使用することになります。
    • アプリケーションは、inotify ハンドル、ファイル/ディレクトリ パスなどを追跡するために追加のメモリも使用することに注意してください。その量は設計によって異なります。

inotify ウォッチの最大数を確認するには:

cat /proc/sys/fs/inotify/max_user_watches

inotify ウォッチの最大数を設定するには

一時的に:

  • sudo sysctl fs.inotify.max_user_watches= を実行 最後にお好みの値を付けてください。

永続的に (詳細情報):

  • put fs.inotify.max_user_watches=524288 あなたのsysctl設定に。システムによっては、次のいずれかの場所にある可能性があります:
    • Debian/RedHat:/etc/sysctl.conf
    • Arch:新しいファイルを /etc/sysctl.d/ に入れます 、例えば/etc/sysctl.d/40-max-user-watches.conf
  • 再起動を避けるために、sysctl 設定を再読み込みすることをお勧めします:sysctl -p (Debian/RedHat) または sysctl --system (アーチ)

inotify ウォッチの最大数に達しているかどうかを確認します:

tail を使用 -f で 古いファイルの (follow) オプション。 tail -f /var/log/dmesg :- すべて問題なければ、最後の 10 行を表示して一時停止します。 Ctrl-C で中止します。監視していない場合 、次のやや不可解なエラーで失敗します。

tail: cannot watch '/var/log/dmsg': No space left on device

inotify ウォッチの使用状況を確認するには

find /proc/*/fd -lname anon_inode:inotify |
   cut -d/ -f3 |
   xargs -I '{}' -- ps --no-headers -o '%p %U %c' -p '{}' |
   uniq -c |
   sort -nr

最初の列は inotify fds の数を示し (ただし監視の数ではありません)、2 番目の列はそのプロセスの PID を示します [ソース:1、2]。


Linux
  1. PHPのメモリ制限

  2. マクロカーネルを揃える

  3. カーネルハッキング環境

  1. trace-cmdを使用したカーネルトレース

  2. 「カーネルパニック」?

  3. kernel.printk 値の説明

  1. Linux –カーネル:名前空間のサポート?

  2. Linux –カーネルIP転送?

  3. Linux – Linuxの汚染されたカーネル?