too openfiles open many increase how files error check linux

openfiles - linux ulimit



¿Cómo cambio el límite de archivos abiertos en Linux? (4)

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

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

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


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

webuser hard nofile 64000

luego inicia sesión como usuario web

su - webuser

2) Edite los siguientes dos archivos para webuser

anexar archivos .bashrc y .bash_profile ejecutando

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

3) Cierre sesión, vuelva a iniciar sesión y verifique que los cambios se hayan realizado correctamente:

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

Eso es todo y ellos boom, boom boom.


Si algunos de sus servicios se estancan en ulimits, a veces es más fácil poner los comandos apropiados en el script de inicio del servicio. Por ejemplo, cuando Apache informa

[alert] (11) Recurso no disponible temporalmente: apr_thread_create: no se puede crear el hilo de trabajo

Intenta poner ulimit -s unlimited en /etc/init.d/httpd . Esto no requiere un reinicio del servidor.


Si está utilizando Linux y obtuvo el error de permiso, tendrá que aumentar el límite permitido en el archivo /etc/limits.conf o /etc/security/limits.conf (donde se encuentra el archivo depende de su distribución de Linux específica) )

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

* hard nofile 10000

Luego cierre la sesión y vuelva a iniciar sesión en su sistema y podrá hacer lo siguiente:

ulimit -n 10000

sin un error de permiso.


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

Cada sistema operativo tiene una configuración de límite duro diferente en un archivo de configuración. Por ejemplo, el límite de archivos abiertos duros 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 establecerse 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 vigentes
  • los límites duros marcan el valor máximo que no puede excederse estableciendo un límite suave

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

A menudo se establecen los valores predeterminados cuando se inicia la máquina. Por lo tanto, aunque puede restablecer su ulimit en un shell individual, puede encontrar que se restablece al valor anterior al reiniciar. Es posible que desee grep sus scripts de arranque para los comandos de existencia ulimit si desea cambiar el valor predeterminado.