Acabo de leer esto en Centos 7 (lo mismo en RHEL) e hice una publicación de blog que lo cubría porque tenía muchos problemas incluso con todas estas publicaciones: coding-stream-of-consciousness.com/2018/12/21/… . A menudo, junto con los archivos abiertos, debe aumentar nproc, que en realidad reside en varios archivos de configuración ... y si usa systemd / systemctl, tiene sus propias configuraciones separadas. Es un poco loco.
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:
los límites suaves son simplemente los límites impuestos actualmente
los límites estrictos marcan el valor máximo que no se puede exceder estableciendo un límite flexible
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.
@hoyhoy ¿Puedo cambiarlo 2048pero no por 4500qué? ver esto
alhelal
@GaneshKrishnan, ¿qué agregar en los archivos de Linux que ha mencionado?
aviral sanjay
@Pritam Windows no tiene ninguno ulimit. Debe especificar lo que está utilizando (por ejemplo, WSL, Cygwin).
Melebius el
99
Si está utilizando Linux y recibió el error de permiso, deberá aumentar el límite permitido en el archivo /etc/limits.confo /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.confarchivo.
* hard nofile 10000
Luego cierre sesión y vuelva a iniciar sesión en su sistema y debería poder hacer:
NOTA: El comodín no se aplica al rootusuario. Debe especificar root hard nofile 10000si desea ajustar el rootlímite.
Joshua Pinter el
1
@JoshPinter Jaja, acabo de pasar las últimas 3 horas más o menos revisando cada tutorial sobre cómo cambiar ulimity 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!
NiCk Newman
1
@NiCkNewman ¡Me alegra que te estés riendo de eso! Ese es un buen rasgo en una persona programadora / sysops. Hice lo mismo y no fui tan jovial. Me alegro de que haya ayudado! :)
Joshua Pinter
SUPLEMENTO: Usted puede encontrar también una configuración en este directorio: /etc/security/limits.d/.
Waldemar Wosiński
2
Abrí /etc/security/limits.conf por primera vez y noté que todo está comentado. ¿Cuál es el valor predeterminado de "hard nofile" entonces?
ka3ak
36
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
Si consigue cambiar su línea en limits.conf de 'hard' a 'soft', debería convertirse en el nuevo valor predeterminado y no requerir cambios en los perfiles de bash.
RishiD
Parece que estás repitiendo unos pasos adicionales. Establecer límites solo hará lo mismo que el perfil, pero en todas las sesiones.
Eddie
6
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 unlimiteden /etc/init.d/httpd. Esto no requiere un reinicio del servidor.
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 estrictoCada 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.
En OS X, estos mismos datos deben establecerse en /etc/sysctl.conf.
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.
fuente
2048
pero no por4500
qué? ver estoulimit
. 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
fuente
root
usuario. Debe especificarroot hard nofile 10000
si desea ajustar elroot
límite.ulimit
y finalmente descubrí que he iniciado sesión como root. Es por eso que seguí viendo el 1024 inulimit -a
. Cambié el cuidado salvaje y agregué un*
interiorlimits.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
luego inicie sesión como usuario web
2) Edite los siguientes dos archivos para el usuario web
anexar archivos .bashrc y .bash_profile ejecutando
3) Cierre sesión, luego vuelva a iniciar sesión y verifique que los cambios se hayan realizado correctamente:
Eso es todo y ellos bum, bum bum.
fuente
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
Intenta poner
ulimit -s unlimited
en/etc/init.d/httpd
. Esto no requiere un reinicio del servidor.fuente