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.