Cuando ejecuto mi aplicación, a veces recibo un error too many files open
.
Running ulimit -a
informa que el límite es 1024. ¿Cómo aumento el límite por encima de 1024?
Editar
ulimit -n 2048
resultados en un error de permiso.
Cuando ejecuto mi aplicación, a veces recibo un error too many files open
.
Running ulimit -a
informa que el límite es 1024. ¿Cómo aumento el límite por encima de 1024?
Editar
ulimit -n 2048
resultados en un error de permiso.
Respuestas:
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 rígido diferente en un archivo de configuración. Por ejemplo, el límite de archivo abierto en Solaris se puede establecer 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, estas configuraciones suelen estar en /etc/security/limits.conf.
Hay dos tipos de límites:
Cualquier usuario puede establecer límites suaves, mientras que los límites rígidos solo se pueden cambiar por root. Los límites son 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 los usuarios deben establecerse durante el inicio de sesión del usuario, por ejemplo, utilizando pam_limits.
A menudo hay valores predeterminados establecidos cuando la máquina arranca. 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 seleccionar los scripts de arranque para los comandos ulimit de existencia si desea cambiar el valor predeterminado.
ulimit
. Debe especificar lo que está utilizando (por ejemplo, WSL, Cygwin).
Si está utilizando Linux y recibió el error de permiso, deberá aumentar el límite permitido en el archivo /etc/limits.conf
o /etc/security/limits.conf
(el lugar donde se ubica el archivo depende de su 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 limits.conf
archivo.
* 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
root
usuario. Debe especificar root hard nofile 10000
si desea ajustar el root
límite.
ulimit
y finalmente descubrí que he iniciado sesión como root. Es por eso que seguí viendo el 1024 in ulimit -a
. Cambié el cuidado salvaje y agregué un *
interior limits.conf
. Todo está bien ahora, (estoy usando las teclas ssh no te preocupes: P) - ¡Gracias!
/etc/security/limits.d/
.
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
anexar archivos .bashrc y .bash_profile ejecutando
echo "ulimit -n 64000" >> .bashrc ; echo "ulimit -n 64000" >> .bash_profile
3) Cierre sesión, luego 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 bum, bum bum.
Si algunos de sus servicios se están reduciendo a ulimits, a veces es más fácil poner los comandos apropiados en el script de inicio del servicio. Por ejemplo, cuando Apache informa
[alerta] (11) Recurso temporalmente no disponible: apr_thread_create: no se puede crear el subproceso de trabajo
Intenta poner ulimit -s unlimited
en /etc/init.d/httpd
. Esto no requiere un reinicio del servidor.