Actualmente estoy enfrentando un problema en un cuadro de Linux donde, como root, tengo comandos que devuelven un error porque se ha alcanzado el límite de vigilancia de inotify.
# tail -f /var/log/messages
[...]
tail: cannot watch '/var/log/messages': No space left on device
# inotifywatch -v /var/log/messages
Establishing watches...
Failed to watch /var/log/messages; upper limit on inotify watches reached!
Please increase the amount of inotify watches allowed per user via '/proc/sys/fs/inotify/max_user_watches'.`
Busqué en Google un poco y cada solución que encontré es aumentar el límite con:
sudo sysctl fs.inotify.max_user_watches=<some random high number>
Pero no pude encontrar ninguna información sobre las consecuencias de aumentar ese valor. Supongo que el valor predeterminado del kernel se estableció por una razón, pero parece ser inadecuado para usos particulares. (p. ej., cuando se usa Dropbox con una gran cantidad de carpetas o software que monitorea muchos archivos)
Asi que aqui están mis preguntas:
- ¿Es seguro aumentar ese valor y cuáles serían las consecuencias de un valor demasiado alto?
- ¿Hay alguna manera de averiguar cuáles son los relojes configurados actualmente y qué proceso los configura para poder determinar si el límite alcanzado no es causado por un software defectuoso?
Respuestas:
¿Es seguro aumentar ese valor y cuáles serían las consecuencias de un valor demasiado alto?
Sí, es seguro aumentar ese valor y debajo están los posibles costos [ fuente ]:
Para verificar el número máximo de relojes inotify:
Para establecer el número máximo de relojes inotify
Temporalmente:
sudo sysctl fs.inotify.max_user_watches=
con su valor preferido al final.Permanentemente ( información más detallada ):
fs.inotify.max_user_watches=524288
en su configuración de sysctl. Dependiendo de su sistema, pueden estar en uno de los siguientes lugares:/etc/sysctl.conf
/etc/sysctl.d/
, por ejemplo/etc/sysctl.d/40-max-user-watches.conf
sysctl -p
(Debian / RedHat) osysctl --system
(Arch)Verifique si se ha alcanzado el número máximo de relojes inotify:
Úselo
tail
con la-f
opción (seguir) en cualquier archivo antiguo, por ejemplotail -f /var/log/dmesg
: - Si todo está bien, mostrará las últimas 10 líneas y la pausa; abortar con Ctrl-C: si no tiene relojes , fallará con este error algo críptico :Para ver qué está usando los relojes inotify
La primera columna indica la cantidad de fds de inotify (no la cantidad de relojes) y la segunda muestra el PID de ese proceso [fuentes: 1 , 2 ].
fuente
I guess very few codes need the values higher than the default
Dropbox puede requerir un límite más alto, dependiendo de cuántos archivos tenga. Iv'e levantó la mía sin problemas. de hecho, la notificación de Dropbox (que ocurre cuando alcanza su límite) le dice explícitamente que lo aumente./etc/sysctl.conf
/etc/sysctl.d
también funciona en los nuevos sistemas basados en RedHat.