実行されたのは実際に開いているファイル ハンドルではなく、inotify が監視します。
これはエラー メッセージで確認できます:
Sep 13 05:32:22 pars.work systemd[1]: Failed to set a watch for nginx.service's PID file /var/run/nginx.pid: Too many open files
この問題を解決するには、システムが使用できる inotify ウォッチの数を増やす必要があります。実際にチェックすると、8192 のように途方もなく低い値であることがわかります。
$ sysctl fs.inotify.max_user_watches
fs.inotify.max_user_watches = 8192
sysctl fs.inotify.max_user_watches
を設定できます /etc/sysctl.conf
を編集することで永続的により高い値に または /etc/sysctl.d
でファイルを作成する ディレクトリ。たとえば、私のシステムには次のものがあります:
$ cat /etc/sysctl.d/10-user-watches.conf
fs.inotify.max_user_watches = 1048576
そして、sysctl -p
でロードします .
その数に直行して、100 万のユーザー ファイル ウォッチ スロットを追跡するためにカーネルにメモリを割り当てさせたくない場合があります。代わりに、問題が発生しなくなるまで現在の値を 2 倍にしてください。