En realidad, no se trata de los identificadores de archivos abiertos que se han agotado, sino de los relojes inotify.
Puede ver esto en el mensaje de error:
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
Para resolver el problema, debe aumentar la cantidad de relojes inotify que tiene disponible el sistema. Si realmente verifica, encontrará que tiene un valor ridículamente bajo como 8192.
$ sysctl fs.inotify.max_user_watches
fs.inotify.max_user_watches = 8192
Puede configurar el sysctl fs.inotify.max_user_watches
a un valor más alto persistentemente editando /etc/sysctl.conf
o creando un archivo en el /etc/sysctl.d
directorio. Por ejemplo, mi sistema tiene:
$ cat /etc/sysctl.d/10-user-watches.conf
fs.inotify.max_user_watches = 1048576
Y luego cárguelo con sysctl -p
.
Es posible que no desee ir directamente a ese número y hacer que el kernel asigne memoria para rastrear un millón de ranuras de visualización de archivos de usuario; en su lugar, simplemente tome el valor actual y duplíquelo hasta que el problema deje de ocurrir.