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 solo puede procesar un número limitado de peticiones al mismo tiempo. Si se supera este valor máximo, MySQL o MariaDB mostrarán el mensaje de error “Too many connections”. Esto puede ocurrir, por ejemplo, cuando un script de PHP intenta abrir demasiadas conexiones simultáneas con la base de datos relacional. 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.

HiDrive Cloud Storage
Store and share your data on the go
  • Store, share, and edit data easily
  • Backed up and highly secure
  • Sync with all devices

“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 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, 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:

sudo nano /etc/my.cnf

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

[mysqld]

Agrega una nueva entrada:

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:

SET GLOBAL max_connections = [desired new maximum number];

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

Tu página web con dominio propio
Crea tu página web en minutos
  • Plantillas profesionales
  • Modificación del diseño con un solo clic
  • Dominio, SSL y correo electrónico

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:

[mysqld]

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

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.

SET GLOBAL wait_timeout=120;
SET GLOBAL interactive_timeout=120;
Ir al menú principal