Incrementar el número de archivos abiertos por la base de datos
1. Descripción del error
No se pueden crear nuevas instancias y en los archivos de log del nodo de cómputo aparece el siguiente mensaje de error:
Para solucionar el problema es necesario reviar y ajustar el valor de los parámetros:
open_files_limit
innodb_open_files
En la documentación oficial de MariaDB obtenemos la siguiente información sobre
el parámetro open_files_limit
:
-
Description: The number of file descriptors available to MariaDB. If you are getting the Too many open files error, then you should increase this limit. If set to 0, then MariaDB will calculate a limit based on the following:
MAX(max_connections5, max_connections +table_open_cache2)
MariaDB sets the limit with setrlimit. MariaDB cannot set this to exceed the hard limit imposed by the operating system. Therefore, you may also need to change the hard limit. There are a few ways to do so.
-
If you are using mysqld_safe to start mariadbd, then see the instructions at mysqld_safe: Configuring the Open Files Limit.
- If you are using systemd to start mysqld, then see the instructions at systemd: Configuring the Open Files Limit.
- Otherwise, you can change the hard limit for the mysql user account by modifying /etc/security/limits.conf. See Configuring Linux for MariaDB: Configuring the Open Files Limit for more details.
- Commandline: --open-files-limit=count
- Scope: Global
- Dynamic: No
- Data Type: numeric
- Default Value: Autosized (see description)
- Range: 0 to 4294967295
En la documentación oficial de MariaDB obtenemos la siguiente información sobre
el parámetro innodb_open_files
:
- Description: Maximum .ibd files MariaDB can have open at the same time. Only applies to systems with multiple XtraDB/InnoDB tablespaces, and is separate to the table cache and open_files_limit. The default, if innodb_file_per_table is disabled, is 300 or the value of table_open_cache, whichever is higher. It will also auto-size up to the default value if it is set to a value less than 10.
- Commandline: --innodb-open-files=#
- Scope: Global
- Dynamic: No
- Data Type: numeric
- Default Value: autosized
- Range: 10 to 4294967295
2. Solución
Nos conectamos al contenedor de galera.
Hay que incrementar el valor del parámetro LimitNOFILE
siguiendo los pasos de la documentación oficial.
Editamos el archivo de configuración del servicio de mariadb:
Modificamos el valor del parámetro LimitNOFILE
:
Reiniciamos el servicio de mariadb para que se apliquen los cambios:
Editamos el archivo de configuración de MariaDB.
En la configuración de MariaDB, el valor de open-files-limit
es 9999999
por defecto.
Buscamos el valor de innodb-open-files
y si no existe lo añadimos con el valor 9999999
.
Una vez modificados los valores, reiniciamos el servicio de MariaDB.
Podemos comprobar el estado de las variables acciendo a MariaDB y consultado su valor con las siguientes consultas.