¿Cómo puedo aumentar el límite de archivos abiertos para todos los procesos?

32

Puedo usar ulimit pero creo que eso solo afecta mi sesión de shell. Quiero que se aumente el límite para todos los procesos. Esto está en Red Hat.

contramodo
fuente
¿Qué versión de Red Hat, por cierto? RHEL5?
mattdm

Respuestas:

26

La respuesta de Justin le dice cómo aumentar el número de archivos abiertos disponibles en total para todo el sistema. Pero creo que está preguntando cómo aumentar el límite por usuario, a nivel mundial. La respuesta a eso es agregar las siguientes líneas a /etc/security/limits.conf:

*               soft    nofile            2048
*               hard    nofile            2048

(Donde * significa todos los usuarios).

Hay un poco de documentación resumida en ese archivo y en él man limits.conf. Esto se implementa a través del pam_limits.somódulo que se llama para varios servicios configurados en /etc/pam.d/.

Y, debo admitir, no tengo idea de dónde viene ese valor predeterminado de 1024. Y créeme, lo miré. Incluso lo intenté sin el módulo pam_limits configurado, y todavía está allí. Debe estar codificado en alguna parte, pero no estoy exactamente seguro de dónde.

mattdm
fuente
2
Hmm ... lo configuré correctamente. Salga de SSH y regrese y mi límite flexible todavía está establecido en 1024. ¿Hay algo que me falta para hacer esto "activo"? Gracias.
Joshua Pinter el
@mattdm - Vale la pena mencionar que en algunas distribuciones de Linux el archivo mencionado estará en: /etc/limits.conf
Guy Avraham
13

De acuerdo con el artículo Linux Increase The Maximum Number of Open Files / File Descriptors (FD) , puede aumentar el límite de archivos abiertos agregando una entrada a /etc/sysctl.conf.

Agregue una directiva de configuración de la siguiente manera:

fs.file-max = 100000

Luego guarde y cierre el archivo. Los usuarios deben cerrar sesión y volver a iniciarla para que los cambios surtan efecto o simplemente pueden escribir el siguiente comando:

# sysctl -p

También puede verificar su configuración con el comando:

# cat /proc/sys/fs/file-max
Justin Ethier
fuente
Soy escéptico sobre la necesidad de cerrar sesión y volver a iniciar esta configuración en particular, que abarca todo el sistema. (Eso vale para casi todo en sysctl ...)
mattdm
13

Aumente el número máximo de archivos abiertos ulimit en Linux

1.Paso: abra sysctl.conf y agregue esta línea fs.file-max = 65536

$ vi /etc/sysctl.conf

agregar nueva línea y

fs.file-max = 65536

guardar y Salir.

2. Paso:

$ vi /etc/security/limits.conf

y agregue debajo de lo mencionado

* soft     nproc          65535
* hard     nproc          65535
* soft     nofile         65535
* hard     nofile         65535

guardar y salir verifique el archivo abierto máximo ulimit

# ulimit -a

....
open files                      (-n) 65535
minhas23
fuente
6

Pero si está tratando de aumentar el número máximo de archivos abiertos de un servicio como MariaDB o algo más (usando systemd ), debe hacerlo directamente en el archivo .service

/lib/systemd/system/<servicename>.service

Será algo como esto:

[Unit]
Description=Some Daemon
After=syslog.target network.target

[Service]
Type=notify
LimitNOFILE=49152
ExecStart=/usr/sbin/somedaemon

[Install]
WantedBy=multi-user.target

La respuesta completa está aquí: aumento de nproc para procesos lanzados por systemd en CentOS 7

Matheus Baldasso
fuente
Esto necesita ser votado, ya que la ubicuidad systemdjunto con sus cambios en curso están aumentando en todo el ecosistema Linux. Sin embargo, sugeriría editar la respuesta cp -r /lib/systemd/system/mariadb.service /etc/systemd/system/y realizar los cambios en ese archivo, en lugar del archivo de servicio de todo el sistema que proporciona el paquete.
ILMostro_7
3

SUPLEMENTO

Puede encontrar la configuración en un lugar diferente: /etc/security/limits.d/*.conf

Tuve que modificarlo. No funcionó sin él. El formato es el mismo que paralimits.conf

Waldemar Wosiński
fuente
También tuve que actualizar este archivo para que la configuración tomara completamente nuestros servidores CentOS.
John Eisbrener