El error Too many connections (1040) significa que MySQL o MariaDB alcanzó el número de conexiones que admite. Subir max_connections puede dar margen durante un incidente, pero no corrige por sí solo una fuga, un pool sobredimensionado, consultas que retienen conexiones o un VPS sin memoria. Conserva una sesión administrativa, captura evidencia y reduce la presión antes de cambiar el límite.
Esta guía cubre MySQL 8.x y versiones actuales de MariaDB en Linux con systemd. Los nombres de unidades, rutas, privilegios y variables pueden cambiar según el paquete, el contenedor o el proveedor. Los comandos son ejemplos documentados y revisados de forma estática: no se ejecutaron contra un servidor real. La guía oficial de MariaDB para gestionar demasiadas conexiones también parte de observar el límite y la carga antes de dimensionar.
Qué indica cada síntoma
| Síntoma | Lectura | Siguiente prueba |
|---|---|---|
Threads_connected roza max_connections y Threads_running es bajo. | Muchas sesiones están conectadas pero pocas trabajan. | Agrupa por usuario, host y COMMAND; contrasta el total de pools. |
| Ambos contadores son altos. | Hay concurrencia real, esperas o consultas lentas. | Revisa estados, tiempos, consultas lentas y carga de CPU/I/O. |
Max_used_connections alcanzó el límite solo en un pico. | Puede ser capacidad legítima o una ráfaga de reintentos. | Correlaciona hora, tráfico, despliegues y errores de aplicación. |
Muchas conexiones aparecen como Sleep. | Puede ser reutilización normal o retención excesiva; no prueba una fuga. | Compara antigüedad, tasa de creación y configuración del pool. |
| El ajuste desaparece tras reiniciar. | Solo cambió el valor global en memoria o se editó un archivo no efectivo. | Identifica producto y origen efectivo de configuración. |
Antes de intervenir
Necesitas consola del proveedor o acceso local, una sesión administrativa ya abierta si existe, una ventana de cambio y un backup recuperable. Mantén una segunda sesión de sistema; no cierres la única conexión SQL útil. Si administras por primera vez un servidor, repasa qué controla un VPS.
No pases contraseñas con -pCONTRASEÑA ni las pegues en el historial. Usa socket, un login-path ya configurado o un archivo de opciones protegido. No publiques SHOW FULL PROCESSLIST: host, base y SQL pueden contener datos sensibles.
Prepara y prueba la vía SQL antes del incidente. MariaDB reserva una conexión por encima de max_connections para una cuenta con SUPER o CONNECTION ADMIN; algunas instalaciones también permiten un puerto extra preconfigurado. MySQL reserva una conexión en la interfaz normal para CONNECTION_ADMIN o el antiguo SUPER. Además, su interfaz administrativa solo existe si admin_address se configuró al arrancar y exige SERVICE_CONNECTION_ADMIN. Confirma versión, permisos, TLS/red y credenciales protegidas; un servicio gestionado puede restringir estas opciones. La referencia de variables de MariaDB documenta sus mecanismos.
Una consola de sistema no crea por sí sola un slot SQL. Si no conservas una sesión ni probaste una vía reservada, úsala para reducir o detener primero el tráfico de aplicación y liberar una conexión; no reinicies la base a ciegas.
1. Confirma producto, límite y presión actual
Ejecuta primero consultas de solo lectura desde la sesión segura. La versión y version_comment evitan aplicar sintaxis de MySQL a MariaDB. Max_used_connections es un máximo desde el arranque o reinicio de estadísticas, no la concurrencia actual. Connection_errors_max_connections cuenta rechazos por el límite cuando la versión lo expone; si no devuelve fila, consulta la variable equivalente disponible y los logs, sin asumir un cero.











