Tengo un largo proceso de ejecución en Debian. En algún momento arroja un error:
Demasiados archivos abiertos.
Corriendo:
ulimit -a
muestra:
abrir archivos (-n) 1024
Deseo aumentar el número de archivos abiertos en 2 veces. Después de la ejecución
ulimit -n 2048
el límite está activo hasta el final de mi sesión, lo cual no es aplicable para la tarea.
¿Cómo puedo aumentar permanentemente el número de archivos abiertos?
fuente
También hay un "máximo total" de archivos abiertos establecidos en el núcleo, puede verificar la configuración actual con:
Y establezca un nuevo valor con:
Si desea mantener la configuración entre reinicios, agregue
a
Para verificar el uso máximo de archivos actual:
fuente
0
, solo significa que el número de identificadores de archivos asignados coincide exactamente con el número de identificadores de archivos utilizados.49152 0 18446744073709551615
. No entiendo por qué las dos primeras columnas no se suman a la tercera. Y si tengo 1,8 billones de billones disponibles, no veo cómo los usé todos.Como otros han dicho, puede aplicar límites específicos por usuario o grupo en /etc/security/limits.conf.
Nota: ulimit -n muestra el límite suave.
te mostrará el límite duro.
Esto hace que la salida ulimit -a y ulimit -n sea bastante confusa si, por ejemplo, aumenta el número de archivos de 1024 a 4096, ya que esperaría ver la salida de límite duro, pero todavía está viendo 1024, que es el soft límite.
Además, recuerde que estos límites se aplican por inicio de sesión, por lo tanto, vuelva a iniciar sesión en un nuevo shell y verifique sus cambios, no espere que se propaguen a los inicios de sesión existentes.
fuente
Tenga en cuenta que si ejecuta su proceso start-stop-daemon, establecer ulimits en /etc/security/limits.conf no funciona. Si, por ejemplo, desea aumentar el límite de archivos abiertos para tomcat a 20000, debe agregarlos a las líneas para
/etc/default/tomcat
:Encontré este problema en debian 6.0.4 Para otro proceso, las respuestas dadas deberían ayudar.
fuente
Depende de cómo comiences tu proceso de larga duración. Si se inicia en el momento del arranque (a través de las secuencias de comandos /etc/rcX.d/*), debe realizar una llamada ulimit en la secuencia de comandos de inicio ya que el núcleo establece el límite predeterminado y no se puede ajustar sin volver a compilarlo.
Usar
/etc/security/limits.conf
podría funcionar si lo usacron
para iniciarlo, por ejemplo, con una entrada como esta:Eso debería funcionar porque /etc/pam.d/cron habilita pam_limits.so.
fuente
Puede agregar esto en /etc/security/limits.conf
guardar y luego reiniciar.
fuente
Un comando muy bueno es
ulimit -n
pero hay un problema con demasiadas conexiones y demasiados archivos abiertos:fuente
ulimit -a
, noulimit -n
.