Si recibe el error» Demasiados archivos abiertos (24)», su aplicación/comando/script está alcanzando el límite máximo de archivos abiertos permitido por linux. Debe aumentar el límite de archivos abiertos de la siguiente manera:
Aumentar el límite
Límite por usuario
Abrir archivo: /etc/security/limits.conf
Pegar siguiendo hacia el final:
* hard nofile 500000* soft nofile 500000root hard nofile 500000root soft nofile 500000
500000 es un buen número. No estoy seguro de cuál es el límite máximo, pero 999999 (Seis-9) funcionó para mí una vez, hasta donde recuerdo.
Una vez que guarde el archivo, es posible que deba cerrar sesión e iniciar sesión de nuevo.
pam-limits
He leído en muchos lugares que un paso adicional es necesario para que el límite cambie para los procesos de demonio. Todavía no necesitaba seguimiento, pero si los cambios anteriores no funcionan para usted, puede intentarlo.
Abrir /etc/pam.d/common-session
Añadir la siguiente línea:
session required pam_limits.so
Límite para todo el sistema
Establezca este límite más alto que el límite de usuario establecido anteriormente.
Abrir /etc/sysctl.conf
Añadir lo siguiente:
fs.file-max = 2097152
Ejecutar:
sysctl -p
Lo anterior aumentará el número «total» de archivos que pueden permanecer abiertos en todo el sistema.
Verificar nuevos límites
Utilice el siguiente comando para ver el límite máximo de descriptores de archivo:
cat /proc/sys/fs/file-max
Límite duro
ulimit -Hn
Límite suave
ulimit -Sn
si ha iniciado sesión como root:
Compruebe el límite para otros usuarios
Simplemente reemplace www-data
por el nombre de usuario de linux que desea comprobar:
su - www-data -c 'ulimit -aHS' -s '/bin/bash'
Comprobar los límites de un proceso en ejecución:
Buscar id de proceso (PID):
ps aux | grep process-name
Supongamos que XXX es PID, luego ejecute los siguientes comandos para verificar los límites:
cat /proc/XXX/limits