Saltar a contenido

Cómo incrementar el número de archivos abiertos por proceso

Ha llegado un momento en el que no podíamos crear más instancias en OpenStack, debido a que el número de archivos abiertos que podía tener un proceso era demasiado bajo.

En el nodo de cómputo nos hemos encontrado con el siguiente error:

Can\'t connect to MySQL server on [Errno 24] Too many open files

Para comprobar el número de archivos abiertos por proceso que existen actualmente en el sistema, podemos ejecutar el siguiete comando:

sudo lsof | awk '{print $2,$1}' | sort | uniq -c | sort -n

Para comprobar cuál es el número máximo de archivos abiertos por proceso, podemos ejecutar el siguiente comando:

Soft Limit

ulimit -Sn

Hard Limit

ulimit -Hn

En el nodo de control teníamos que un proceso sólo podía tener 1024 archivos abiertos.

Esto ha provocado que el servicio de Galera empezase a fallar.

Solución

Tenemos que configurar un nuevo valor para el número máximo de archivos abiertos por proceso.

Si hacemos el cambio con el comando ulimit sólo se aplicará a la sesión actual.

Ejemplo:

ulimit -n 65535

Para que la configuración sea permanente, tenemos que configurar los archivos /etc/security/limits.conf y /etc/systemd/system.conf.

En primer lugar, nos conectamos por SSH al nodo de CÓMPUTO, CONTROL y al contenedor de GALERA.

Editamos el archivo:

sudo nano /etc/security/limits.conf
#<domain>      <type>  <item>         <value>
*               soft    nofile         100000

Donde:

domain: - the wildcard *, for default entry
type:   - "soft" for enforcing the soft limits
        - "hard" for enforcing hard limits
item:   - nofile - max number of open file descriptors

Editamos el archivo:

sudo nano /etc/systemd/system.conf

Buscamos la línea:

#DefaultLimitNOFILE=1024:524288

Y la reemplazamos por la siguiente:

DefaultLimitNOFILE=100000:524288

Después de esto tenemos que reiniciar el nodo de control y el nodo de cómputo.

reboot

References