
tail: inotify cannot be used, reverting to polling: Too many open files
Estoy ejecutando servidores Apache y Tomcat en Ubuntu (AWS ec2). Cada vez que intento seguir catalina.out
Tomcat, aparecen demasiados archivos abiertos. Sin embargo, puedo verlo usando vi.
Después de buscar en Internet, probé el siguiente comando:
lsof | awk '{ print $2; }' | sort -rn | uniq -c | sort -rn | head
Con resultados a continuación
17 5650
17 5178
13 5972
10 5976
10 5974
9 5977
9 5975
9 5973
8 5978
4 9
Cuando acabo de ejecutar lsof los identificadores de proceso: 5650 eran bash, 5178 era nuevamente bash y otros eran sshd,top y apache2.
¿Por qué hay una gran cantidad de archivos de apertura bash, top y sshd? ¿Cómo puedo cerrar estos archivos? ¿Acabar con estos procesos servirá de algo? ¿El número disminuirá por sí solo o tendré que hacer algo? En este momento todo funciona como se esperaba, excepto que tail -f me da demasiados archivos abiertos.
Utilizo mucho top y ssh para el servidor. ¿Pero por qué no liberan los archivos? O estoy conectando los puntos equivocados.
Respuesta1
Probablemente te quedaste sin relojes inotify. Por defecto es un 8192 absurdamente bajo.
Verifique su valor actual mediante:
sysctl fs.inotify.max_user_watches
Luego cámbielo a algo más razonable editando /etc/sysctl.conf
un archivo que incluya y agregando:
fs.inotify.max_user_watches = 524288
(o cualquier valor) y luego ejecutarlo sysctl -p
para que surta efecto.
Respuesta2
Puedes intentar aumentar fs.inotify.max_user_instances:
sysctl fs.inotify.max_user_instances=512
Respuesta3
Tal vez sea un error del kernel de Ubuntu, verifiqueestedesde el rastreador de errores de la plataforma de lanzamiento.
¡Y si es necesario, actualice su kernel!