¿Cómo puedo cambiar el límite de archivos abiertos en Linux?

Cuando ejecuto mi aplicación, a veces aparece un error sobre "demasiados archivos abiertos".

Ejecutando ulimit -a informa que el límite es de 1024. ¿Cómo puedo aumentar el límite por encima de 1024?

**Editar El comando ulimit -n 2048 da como resultado un error de permiso.

Solución

Siempre puedes intentar hacer un ulimit -n 2048. Esto sólo restablecerá el límite para su shell actual y el número que especifique no debe exceder el límite duro

Cada sistema operativo tiene un límite duro diferente establecido en un archivo de configuración. Por ejemplo, el límite duro de archivos abiertos en Solaris puede establecerse en el arranque desde /etc/system.

set rlim_fd_max = 166384
set rlim_fd_cur = 8192

En OS X, estos mismos datos deben establecerse en /etc/sysctl.conf.

kern.maxfilesperproc=166384
kern.maxfiles=8192

En Linux, estos ajustes suelen estar en /etc/security/limits.conf.

Hay dos tipos de límites:

  • límites blandos son simplemente los límites que se aplican actualmente
  • límites duros marcan el valor máximo que no puede ser superado por el establecimiento de un límite suave

Los límites blandos pueden ser establecidos por cualquier usuario, mientras que los límites duros sólo pueden ser modificados por el root. Los límites son una propiedad de un proceso. Se heredan cuando se crea un proceso hijo, por lo que los límites de todo el sistema deben establecerse durante la inicialización del sistema en los scripts de inicio y los límites de usuario deben establecerse durante el inicio de sesión del usuario, por ejemplo, utilizando pam_limits.

A menudo hay valores por defecto establecidos cuando la máquina arranca. Por lo tanto, aunque pueda restablecer su ulimit en un shell individual, puede encontrar que se restablece al valor anterior al reiniciar. Es posible que quiera buscar en sus scripts de arranque los comandos ulimit existentes si quiere cambiar el valor por defecto.

Comentarios (3)

Si estás usando Linux y tienes el error de permiso, tendrás que aumentar el límite permitido en el archivo /etc/limits.conf o /etc/security/limits.conf (la ubicación del archivo depende de tu distribución específica de Linux).

Por ejemplo, para permitir que cualquier persona en la máquina aumente su número de archivos abiertos hasta 10000 agregue la línea al archivo limits.conf.

hard nofile 10000

Luego cierra la sesión y vuelve a iniciar la sesión en tu sistema y deberías poder hacerlo:

ulimit -n 10000

sin que se produzca un error de permiso.

Comentarios (6)
  1. Añada la siguiente línea a /etc/security/limits.conf.
webuser hard nofile 64000

luego inicie sesión como usuario web

su - webuser
  1. Editar los siguientes dos archivos para el usuario web

añadir el archivo .bashrc y .bash_profile ejecutando

echo "ulimit -n 64000" >> .bashrc ; echo "ulimit -n 64000" >> .bash_profile
  1. Cierre la sesión, vuelva a iniciarla y compruebe que los cambios se han realizado correctamente:
$ ulimit -a | grep open
open files                      (-n) 64000

Eso es todo y ellos pum, pum, pum.

Comentarios (2)