# Solución del error “Too many connections” en MySQL/MariaDB

El error de MySQL “Too many connections” (o “Demasiadas conexiones”) aparece cuando se supera el número máximo permitido de conexiones simultáneas al servidor. Cada cliente activo consume una conexión y, cuando se alcanza el límite, no se pueden abrir nuevas. Las causas más comunes incluyen muchas consultas paralelas en ejecución, conexiones que no se cierran correctamente o un valor `max_connections` configurado demasiado bajo en el servidor.

## ¿Cómo se produce el error “Too many connections” en MySQL/MariaDB?

Una [base de datos](https://www.ionos.es/digitalguide/hosting/cuestiones-tecnicas/bases-de-datos/) solo puede procesar un número limitado de peticiones al mismo tiempo. Si se supera este **valor máximo**, [MySQL](https://www.ionos.es/digitalguide/servidores/know-how/que-es-mysql/) o [MariaDB](https://www.ionos.es/digitalguide/servidores/know-how/que-es-mariadb/) mostrarán el mensaje de error “Too many connections”. Esto puede ocurrir, por ejemplo, cuando un script de [PHP](https://www.ionos.es/digitalguide/paginas-web/creacion-de-paginas-web/tutorial-de-php-fundamentos-basicos-para-principiantes/) intenta abrir demasiadas conexiones simultáneas con la [base de datos relacional](https://www.ionos.es/digitalguide/hosting/cuestiones-tecnicas/bases-de-datos-relacionales/). Del mismo modo, una aplicación web con alta demanda de tráfico puede generar el error “Too many connections” si el servidor no está optimizado para manejas tanas conexiones activas.

## “Too many connections”: así puedes solucionar el error en MySQL o MariaDB

Existen diferentes formas de solucionar el error “Too many connections” en MySQL, dependiendo de dónde se origine el problema. A continuación, se explican detalladamente las soluciones más comunes y cómo aplicarlas paso a paso.

### Solución 1: ajustar el nuevo número máximo de conexiones

La **variable del sistema** `max_connections` define cuántas conexiones simultáneas acepta MySQL o MariaDB. Por defecto, este valor es 151, lo que permite 150 conexiones normales más una conexión reservada para una cuenta con privilegios **SUPER**. Este privilegio otorga derechos de administración avanzados al usuario.

Antes de modificar `max_connections`, debes decidir qué nuevo límite deseas establecer. Aumentarlo puede ser útil, pero también implica un mayor consumo de recursos. Ten en cuenta los siguientes factores:

- La cantidad de [memoria RAM](https://www.ionos.es/digitalguide/servidores/know-how/que-es-la-memoria-ram/) disponible
- La RAM que requiere cada conexión (las consultas simples consumen menos memoria que las complejas)
- El tiempo de respuesta que consideras aceptable

Según la [documentación de MySQL](https://dev.mysql.com/doc/refman/8.0/en/too-many-connections.html "Documentación de MySQL"), la mayoría de los sistemas Linux pueden manejar **entre 500 y 1000 conexiones simultáneas sin inconvenientes**, siempre que el hardware esté correctamente dimensionado.

#### Ajuste permanente de `max_connections`

Para ajustar permanentemente la variable `max_connections`, debes actualizar el archivo `my.cnf` o el archivo `my.ini`.

Abre el archivo `/etc/my.cnf` para editarlo con el siguiente comando:

```none
sudo nano /etc/my.cnf
```

Justo debajo de la primera línea aparece la siguiente entrada:

```none
[mysqld]
```

Agrega una nueva entrada:

```none
max_connections=[desired new maximum number]
```

#### Ajuste temporal de `max_connections`

Para cambiar temporalmente el número máximo de conexiones solo durante la sesión actual, ejecuta el siguiente comando en la consola de MySQL:

```none
SET GLOBAL max_connections = [desired new maximum number];
```

El ajuste es válido hasta que el servidor SQL se reinicie.

### Solución 2: cerrar conexiones no utilizadas

Una causa frecuente del error “Too many connections” es que las aplicaciones no cierran correctamente las conexiones a la base de datos. Cada conexión abierta ocupa un espacio en MySQL o MariaDB, y si no se libera, el servidor puede alcanzar rápidamente el número máximo permitido.

En PHP, debes llamar siempre a `mysqli_close($connection)` después de usar una conexión y ejecutar las consultas. En Python, utiliza el equivalente `connection.close()`. Y en Node.js, se recomiendo emplear `connection.end()`.

Otro enfoque eficaz es implementar **pools de conexiones**. Este método gestiona y reutiliza un número fijo de conexiones de forma centralizada, en lugar de abrir una nueva para cada solicitud. De este modo, se reduce la carga del servidor y se mejora el rendimiento general, ya que crear y cerrar conexiones consume recursos y tiempo.

### Solución 3: ajustar el tiempo de espera de las conexiones

Otra manera de evitar el error “Too many connections” es limitar la duración máxima de las conexiones inactivas. Por defecto, MySQL y MariaDB mantienen abiertas las conexiones inactivas durante un tiempo relativamente largo, incluso cuando ya no ejecutan consultas. Sin embargo, cada una de ellas sigue ocupando un espacio en el sistema.

Las variables del sistema `wait_timeout` y `interactive_timeout` determinan cuánto tiempo permanecen activas las conexiones inactivas antes de que el servidor las cierre automáticamente. `wait_timeout` se aplica a las conexiones normales, mientras que `interactive_timeout` se usa para conexiones de clientes interactivos, como la consola MySQL. Reducir estos valores permite liberar antes las conexiones inactivas.

#### Ajuste permanente

El ajuste se puede realizar de forma permanente en el archivo de configuración `my.cnf` o `my.ini`. Para ello, ábrelo y busca la siguiente entrada:

```none
[mysqld]
```

A continuación, añade las siguientes líneas:

```none
wait_timeout=120
interactive_timeout=120
```

Así te aseguras de que las conexiones inactivas no bloqueen innecesariamente los recursos.

#### Ajuste temporal

Este ajuste también puede realizarse de forma temporal desde la consola de MySQL. En ese caso, el cambio solo se aplica a la sesión actual y los valores se restablecen al reiniciar el servidor SQL.

```none
SET GLOBAL wait_timeout=120;
SET GLOBAL interactive_timeout=120;
```


This is a markdown version of: [https://www.ionos.es/digitalguide/paginas-web/desarrollo-web/error-de-mysqlmariadb-too-many-connections/](https://www.ionos.es/digitalguide/paginas-web/desarrollo-web/error-de-mysqlmariadb-too-many-connections/) for AI/LLM consumption.