¿Cómo puedo cambiar el número de archivos abiertos límite en Linux?[cerrado]

StackOverflow https://stackoverflow.com/questions/34588

  •  09-06-2019
  •  | 
  •  

Pregunta

Al ejecutar mi aplicación a veces me sale un error sobre too many files open.

Ejecución ulimit -a los informes que el límite es de 1024.¿Cómo puedo aumentar el límite por encima de 1024?

Editar ulimit -n 2048 resultados en un error de permiso.

¿Fue útil?

Solución

Siempre se puede tratar de hacer un ulimit -n 2048.Sólo se restablecerá el límite para su actual consola y el número que usted especifique no debe exceder el límite duro

Cada sistema operativo tiene un duro diferente límite el programa de instalación en un archivo de configuración.Por ejemplo, el duro abrir el archivo límite en Solaris se puede establecer en el arranque de /etc/system.

set rlim_fd_max = 166384
set rlim_fd_cur = 8192

En OS X, estos mismos datos se debe establecer en /etc/sysctl.conf.

kern.maxfilesperproc=166384
kern.maxfiles=8192

Bajo Linux, estos valores son a menudo en /etc/security/limits.conf.

Hay dos tipos de límites:

  • suave los límites son simplemente el cumplimiento de los límites de
  • duro límites marque el valor máximo que no puede ser superado mediante el establecimiento de un límite suave

Suave límites podría ser establecido por cualquier usuario mientras duro límites sólo pueden cambiarse por la raíz.Los límites son una propiedad de un proceso.Se heredan cuando un proceso hijo es creado para todo el sistema de fijar límites durante la inicialización del sistema en los scripts de inicio de usuario y fijar límites durante el inicio de sesión de usuario, por ejemplo, mediante el uso de pam_limits.

A menudo hay conjunto de valores por defecto cuando se inicia el equipo.Así que, aunque puede restablecer su ulimit en un individuo shell, usted puede encontrar que se restablece al valor anterior en el reinicio.Puede que desee grep sus scripts de arranque para la existencia de ulimit comandos si desea cambiar el valor predeterminado.

Otros consejos

Si estás usando Linux y tienes el permiso de error, deberá elevar el límite permitido en la /etc/limits.conf o /etc/security/limits.conf archivo (donde se encuentra el archivo depende de su distribución específica de Linux).

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

* hard nofile 10000

A continuación, cierre la sesión y entrar a su sistema y debe ser capaz de hacer:

ulimit -n 10000

sin un error de permiso.

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

webuser hard nofile 64000

a continuación, inicie la sesión como webuser

su - webuser

2) Editar dos archivos siguientes para webuser

anexar .bashrc y .bash_profile archivo ejecutando

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

3) cierre la Sesión y, a continuación, vuelva a iniciar la sesión y comprobar que los cambios se han realizado correctamente:

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

Eso es todo y les boom, boom boom.

Si algunos de sus servicios se están resistiendo en ulimits, a veces es más fácil poner los comandos apropiados en servicio del guión de inicio.Por ejemplo, cuando Apache es la presentación de informes

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

Trate de poner ulimit -s unlimited en /etc/init.d/httpd.Esto no requiere reiniciar el servidor.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top