¿Cómo cambio el límite de cantidad de archivos abiertos en Linux? [cerrado]

Resuelto John Meagher asked hace 16 años • 4 respuestas

Cuando ejecuto mi aplicación, a veces aparece un error sobre too many files open.

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

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

John Meagher avatar Aug 29 '08 23:08 John Meagher
Aceptado

Siempre puedes intentar hacer un ulimit -n 2048. Esto solo restablecerá el límite de su shell actual y el número que especifique no debe exceder el límite estricto.

Cada sistema operativo tiene una configuración de límite estricto diferente en un archivo de configuración. Por ejemplo, el límite de archivos abiertos en Solaris se puede configurar al arrancar desde /etc/system.

set rlim_fd_max = 166384
set rlim_fd_cur = 8192

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

kern.maxfilesperproc=166384
kern.maxfiles=8192

En Linux, estas configuraciones suelen estar en /etc/security/limits.conf.

Hay dos tipos de límites:

  • Los límites suaves son simplemente los límites actualmente aplicados.
  • Los límites estrictos marcan el valor máximo que no se puede exceder estableciendo un límite flexible.

Cualquier usuario puede establecer límites suaves, mientras que los límites estrictos solo los puede cambiar el usuario raíz. Los límites son una propiedad de un proceso. Se heredan cuando se crea un proceso hijo, por lo que se deben establecer límites para todo el sistema durante la inicialización del sistema en los scripts de inicio y los límites de usuario se deben establecer durante el inicio de sesión del usuario, por ejemplo, utilizando pam_limits.

A menudo hay valores predeterminados establecidos cuando se inicia la máquina. Por lo tanto, aunque pueda restablecer su ulimit en un shell individual, es posible que se restablezca al valor anterior al reiniciar. Es posible que desee buscar en sus scripts de arranque la existencia de comandos ulimit si desea cambiar el valor predeterminado.

hoyhoy avatar Aug 29 '2008 16:08 hoyhoy

Si está utilizando Linux y obtuvo el error de permiso, deberá aumentar el límite permitido en el archivo /etc/limits.confo /etc/security/limits.conf(la ubicación del archivo depende de su distribución de Linux específica).

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 limits.confarchivo.

* hard nofile 10000

Luego cierre sesión y vuelva a iniciar sesión en su sistema y debería poder hacer:

ulimit -n 10000

sin un error de permiso.

Jonathan Stanton avatar May 28 '2009 21:05 Jonathan Stanton

1) Agregue la siguiente línea a/etc/security/limits.conf

webuser hard nofile 64000

luego inicie sesión como usuario web

su - webuser

2) Edite los siguientes dos archivos para el usuario web

agregue el archivo .bashrc y .bash_profile ejecutando

echo "ulimit -n 64000" >> .bashrc ; echo "ulimit -n 64000" >> .bash_profile

3) Cerrar sesión, luego volver a iniciar sesión y verificar que los cambios se hayan realizado correctamente:

$ ulimit -a | grep open
open files                      (-n) 64000

Eso es todo y ellos boom, boom boom.

Vikrant Telkar avatar Nov 27 '2011 11:11 Vikrant Telkar