¿Cómo puedo cambiar el límite del número de archivos abiertos en Linux? [cerrado]
Al ejecutar mi aplicación a veces recibo un error sobre too many files open
.
Ejecutando ulimit -a
informa que el límite es 1024. ¿Cómo aumento el límite por encima de 1024?
Editar
ulimit -n 2048
resulta en un error de permiso.
4 answers
Siempre puedes intentar hacer un ulimit -n 2048
. Esto solo restablecerá el límite para su shell actual y el número que especifique no debe exceder el límite duro
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 en Solaris se puede establecer al arrancar desde /etc/system.
set rlim_fd_max = 166384
set rlim_fd_cur = 8192
En OS X, estos mismos datos deben ser establecidos en /etc/sysctl.conf.
kern.maxfilesperproc=166384
kern.maxfiles=8192
Bajo Linux, estas configuraciones a menudo están en /etc/security/limits.conf.
Hay dos tipos de límites:
- los límites suaves son simplemente los límites actualmente aplicados
- límites duros marcan el valor máximo que no se puede superar estableciendo un límite blando
Los límites suaves pueden ser establecidos por cualquier usuario mientras que los límites duros son cambiables solo por root. 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 en todo el sistema durante el proceso. la inicialización del sistema en los scripts de inicio y los límites de usuario deben establecerse durante el inicio de sesión del usuario, por ejemplo, mediante el uso de pam_limits.
A menudo hay valores predeterminados 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 grep sus scripts de arranque para los comandos ulimit existencia si desea cambiar el valor predeterminado.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-06-26 06:29:14
Si está usando Linux y tiene el error de permiso, necesitará aumentar el límite permitido en el archivo /etc/limits.conf
o /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 archivo limits.conf
.
* 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.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-12-14 15:53:51
1) Añádase la siguiente línea a /etc/security/limits.conf
webuser hard nofile 64000
Luego inicie sesión como usuario web
su - webuser
2) Editar los siguientes dos archivos para webuser
Añadir .bashrc y .bash_profile archivo ejecutando
echo "ulimit -n 64000" >> .bashrc ; echo "ulimit -n 64000" >> .bash_profile
3) Cierre la 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 boom, boom boom.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-02-11 17:08:41
Si algunos de sus servicios se resisten a ulimits, a veces es más fácil poner los comandos apropiados en el script init del servicio. Por ejemplo, cuando Apache está reportando
[alert] (11) Resource temporarily unavailable: apr_thread_create: unable to create worker thread
Intenta poner ulimit -s unlimited
en /etc/init.d/httpd
. Esto no requiere un reinicio del servidor.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-10-27 22:37:10