Ini sebenarnya bukan pegangan file terbuka yang telah habis, tetapi inotify jam tangan.
Anda dapat melihat ini di pesan kesalahan:
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
Untuk mengatasi masalah ini, Anda perlu menambah jumlah jam tangan inotify yang tersedia di sistem. Jika Anda benar-benar memeriksa, Anda akan menemukannya memiliki nilai yang sangat rendah seperti 8192.
$ sysctl fs.inotify.max_user_watches
fs.inotify.max_user_watches = 8192
Anda dapat mengatur sysctl fs.inotify.max_user_watches
ke nilai yang lebih tinggi secara terus-menerus dengan mengedit /etc/sysctl.conf
atau membuat file di /etc/sysctl.d
direktori. Misalnya, sistem saya memiliki:
$ cat /etc/sysctl.d/10-user-watches.conf
fs.inotify.max_user_watches = 1048576
Dan kemudian memuatnya dengan sysctl -p
.
Anda mungkin tidak ingin langsung ke nomor itu dan menyebabkan kernel mengalokasikan memori untuk melacak satu juta slot jam tangan file pengguna; sebagai gantinya, ambil saja nilai saat ini dan gandakan sampai masalah berhenti terjadi.