🎨 Sysprovider Code
Sysprovider LogoWiki
🇪🇸Hosting español para ecommerce

Solucionar el error 'Too many connections' en MySQL

Actualizado el 17 de noviembre de 2025

¿Tu web se ha quedado congelada mostrando un error de conexión a la base de datos? No te preocupes, es un problema más común de lo que parece y, por suerte, tiene solución. Si ves un mensaje como "Too many connections" o "User already has more than 'max_user_connections' active connections", significa que tu servidor MySQL ha alcanzado el límite de conexiones simultáneas permitidas. Vamos a desgranar qué significa esto, por qué ocurre y, lo más importante, cómo solucionarlo paso a paso.

¿Qué significa exactamente el error "Too many connections"?

Imagina que tu base de datos es un restaurante muy popular. Cada cliente (tu web, un plugin, una app) que quiere entrar a consultar o guardar información necesita una mesa (una conexión). El restaurante tiene un número limitado de mesas. Si llegan más clientes de los que hay mesas, los nuevos tienen que esperar fuera o, directamente, se les dice que no hay sitio. El error "Too many connections" es exactamente eso: tu servidor MySQL tiene un límite de "mesas" (conexiones) y se han agotado.

Este límite no es caprichoso. Existe para proteger al servidor de un colapso total. Si permitiera un número infinito de conexiones, la memoria RAM y la CPU se saturarían, y el servidor entero podría caerse, afectando a todos los sitios web alojados en él.

Causas más frecuentes del error mysql conexiones

Antes de lanzarnos a cambiar configuraciones, es crucial entender por qué se ha llegado a este punto. Las causas suelen ser una de estas:

  1. Picos de tráfico inesperados: Un artículo que se hace viral, una campaña de marketing agresiva o un evento especial pueden generar cientos de peticiones simultáneas a tu web, y cada una necesita una conexión a la base de datos.
  2. Consultas lentas y mal optimizadas: Si un plugin o una parte de tu código ejecuta consultas SQL muy pesadas que tardan mucho en completarse, las conexiones se quedan "ocupadas" durante más tiempo del necesario. Esto bloquea nuevas conexiones.
  3. Conexiones que no se cierran: A veces, un script o aplicación se queda "colgado" y no libera la conexión al terminar. Esto va llenando el límite poco a poco hasta que se agota. Es como si un cliente se quedara dormido en la mesa y nadie le despertara.
  4. Configuración del servidor demasiado baja: Es posible que el límite max_connections esté configurado con un valor muy bajo para las necesidades reales de tu sitio. Esto es común en servidores compartidos o planes de hosting básicos.
  5. Ataques de fuerza bruta o DDoS: En algunos casos, un atacante puede intentar saturar el servidor abriendo muchas conexiones a la vez para dejarlo sin servicio.

Cómo diagnosticar el problema (sin pánico)

Lo primero es mantener la calma. No vamos a tocar nada a lo loco. Vamos a hacer un diagnóstico rápido para confirmar el problema y ver su magnitud.

Paso 1: Acceder a la terminal (SSH)

Necesitarás acceso a la terminal de tu servidor. Esto se hace normalmente a través de SSH. Si no sabes qué es, es como abrir una "ventana de comandos" para hablar directamente con tu servidor. Tu proveedor de hosting puede darte los datos de acceso (usuario, IP y puerto).

Paso 2: Conectarse a MySQL desde la línea de comandos

Una vez dentro, escribe el siguiente comando y pulsa Enter. Te pedirá la contraseña de root de MySQL (o de un usuario con privilegios):

mysql -u root -p

Paso 3: Ver el número máximo de conexiones permitidas

Ya dentro del monitor de MySQL, ejecuta esta consulta:

SHOW VARIABLES LIKE 'max_connections';

Esto te dirá el número total de conexiones que tu servidor MySQL permite a la vez. Por ejemplo, puede que veas 100 o 150.

Paso 4: Ver las conexiones actualmente activas

Ahora, ejecuta esta otra consulta para ver cuántas conexiones hay abiertas en este mismo momento:

SHOW STATUS LIKE 'Threads_connected';

Si el número de Threads_connected es igual o está muy cerca de max_connections, ¡hemos encontrado al culpable! Tu servidor está saturado.

[INFO] Otra consulta muy útil para ver quién está usando las conexiones es SHOW PROCESSLIST;. Te mostrará una lista de todas las conexiones activas, qué están haciendo y cuánto tiempo llevan. Esto te ayuda a identificar consultas lentas o procesos colgados.

Soluciones efectivas para solucionar mysql connections

Ahora que ya sabemos que el problema es la saturación de conexiones, vamos a aplicar las soluciones. Iremos de las más simples a las más avanzadas.

Solución 1: Reiniciar el servicio (Parche temporal)

Esto es como darle al botón de "reset" del restaurante para que todas las mesas se liberen. Es una solución inmediata pero temporal; si el problema de fondo persiste, volverá a ocurrir.

Para reiniciar MySQL, escribe este comando en la terminal (fuera del monitor de MySQL):

sudo systemctl restart mysql

O si tu sistema usa otro gestor:

sudo service mysql restart

[WARNING] Este comando cerrará todas las conexiones de golpe, lo que puede causar errores momentáneos en tu web. Hazlo solo si es urgente y la web está caída. No es una solución definitiva.

Solución 2: Aumentar el límite de max_connections (Solución a corto plazo)

Esta es la solución más directa. Vamos a decirle al servidor que ponga más mesas en el restaurante. Es un cambio en la configuración de MySQL.

Paso 1: Encuentra el archivo de configuración de MySQL. Normalmente se llama my.cnf o my.ini y se encuentra en /etc/mysql/ o /etc/. Puedes usar el comando:

sudo nano /etc/mysql/my.cnf

También puede estar en /etc/mysql/mysql.conf.d/mysqld.cnf en sistemas Ubuntu/Debian.

Paso 2: Dentro del archivo, busca la sección [mysqld]. Si no existe, créala al final del archivo.

Paso 3: Añade o modifica la línea max_connections. Por ejemplo, para subir el límite a 200:

[mysqld]
max_connections = 200

Paso 4: Guarda el archivo (en nano, con Ctrl+O, luego Enter, y Ctrl+X para salir).

Paso 5: Reinicia MySQL para que los cambios surtan efecto:

sudo systemctl restart mysql

[TIP] No subas este número de forma desmesurada. Cada conexión consume memoria RAM. Subir de 100 a 500 en un servidor con poca RAM puede ser contraproducente y ralentizar todo. Un aumento prudente (por ejemplo, de 100 a 150 o 200) suele ser suficiente para empezar. Si necesitas más, tendrás que optimizar el código o ampliar los recursos del servidor.

Solución 3: Optimizar el código y las consultas (Solución a largo plazo)

Aumentar el límite es un parche. La solución real es que tu web necesite menos conexiones simultáneas. Esto se logra optimizando el rendimiento.

  • Revisa los plugins de WordPress (si usas WordPress): Desactiva todos los plugins y actívalos uno a uno para ver cuál causa el problema. A veces, un plugin mal codificado o un caché mal configurado genera muchas consultas.
  • Optimiza las consultas SQL: Si tienes conocimientos de programación, revisa el código de tu tema o aplicación. Busca consultas que no usen índices en las tablas o que recuperen demasiados datos innecesarios.
  • Instala un plugin de caché: Un plugin de caché (como W3 Total Cache o WP Super Cache) genera páginas HTML estáticas y reduce drásticamente las peticiones a la base de datos. Es una de las formas más efectivas de reducir la carga.
  • Usa un CDN (Red de Distribución de Contenidos): Un CDN sirve las imágenes, CSS y JavaScript de tu web desde servidores en todo el mundo, aliviando la carga de tu servidor principal y, por tanto, de MySQL.

Solución 4: Ajustar el wait_timeout (Para conexiones colgadas)

Este parámetro define cuánto tiempo MySQL espera antes de cerrar una conexión que está inactiva. Si tu servidor tiene muchas conexiones "dormidas", bajar este tiempo ayuda a liberarlas antes.

Dentro del archivo my.cnf, en la sección [mysqld], añade o modifica estas líneas:

[mysqld]
wait_timeout = 60
max_connections = 200

Con wait_timeout = 60, las conexiones que estén inactivas durante más de 60 segundos se cerrarán automáticamente. Esto libera "mesas" para nuevas peticiones.

[INFO] El valor por defecto suele ser 28800 segundos (8 horas). Reducirlo a 60 o 120 segundos es una práctica común para sitios web con mucho tráfico. Si tu web tiene procesos que tardan mucho, no lo bajes demasiado o podrías cortar operaciones legítimas.

Solución 5: Monitorización y recursos del servidor

Si después de aplicar todo esto el problema persiste, es posible que tu servidor simplemente no tenga los recursos suficientes (RAM y CPU) para manejar el tráfico de tu web.

  • Monitoriza el uso de RAM y CPU: Usa comandos como htop o free -m en la terminal para ver el consumo de recursos. Si la RAM está al 90% o más, es una señal clara de que necesitas más.
  • Considera actualizar tu plan de hosting: Si estás en un servidor compartido, es muy probable que el límite de max_connections sea bajo y que otros usuarios del servidor también afecten al rendimiento. Un plan VPS o un servidor dedicado te dará control total sobre la configuración de MySQL y más recursos.
  • Usa un sistema de monitorización: Herramientas como UptimeRobot o New Relic te alertarán cuando tu web esté caída y te darán datos sobre el rendimiento para que puedas anticiparte a los problemas.

¿Qué pasa si uso un panel de control como Syspanel?

Si tu hosting utiliza el panel Syspanel (anteriormente conocido como HestiaCP), la gestión es muy visual y sencilla. Recuerda que el acceso a este panel se realiza a través del puerto 2106 (ejemplo: https://tu-dominio.com:2106).

Dentro de Syspanel, no podrás editar directamente el archivo my.cnf, pero sí podrás ver el estado de los servicios y reiniciar MySQL desde la sección de "Servicios". Para cambios más profundos en la configuración, deberás acceder por SSH como hemos explicado antes. Syspanel es excelente para la gestión diaria, pero la configuración fina del servidor se hace por terminal.

Preguntas frecuentes (FAQ) sobre el error mysql conexiones

¿Este error puede arruinar mi base de datos?
No, el error no daña los datos. Simplemente impide que se establezcan nuevas conexiones. Tus datos están seguros. Una vez que se liberen conexiones (reiniciando o esperando), todo volverá a la normalidad.

¿Por qué veo este error incluso con poco tráfico?
Esto suele indicar que hay un proceso o script que está haciendo un bucle infinito de conexiones o que hay consultas muy lentas que bloquean las conexiones. Revisa el SHOW PROCESSLIST; para identificar al culpable.

¿Es seguro aumentar max_connections al máximo?
No. Cada conexión consume memoria. Si pones un número demasiado alto y tu servidor no tiene suficiente RAM, podrías provocar que el sistema operativo mate el proceso de MySQL (OOM Killer), causando una caída total. Aumenta el valor de forma gradual y monitoriza el consumo de memoria.

¿Puedo solucionar esto desde el panel de control de mi hosting?
Depende del panel. Paneles como cPanel o Syspanel permiten reiniciar MySQL, pero la edición del archivo de configuración suele requerir acceso SSH. Si no te sientes cómodo con la terminal, contacta con el soporte de tu hosting y pídeles que aumenten el límite de max_connections o que optimicen la configuración.

¿El uso de un plugin de caché realmente ayuda con "Too many connections"?
Absolutamente. Es la medida más efectiva para reducir la carga en MySQL. Al servir páginas estáticas, el número de peticiones a la base de datos cae drásticamente, a veces en un 80% o más. Esto reduce la probabilidad de alcanzar el límite de conexiones.

Resumen y consejos finales

El error "Too many connections" es un aviso de que tu servidor está pidiendo ayuda. Hemos visto que hay un camino claro para solucionarlo:

  1. Diagnostica: Usa SHOW STATUS LIKE 'Threads_connected'; para confirmar la saturación.
  2. Alivia la presión: Reinicia MySQL o aumenta max_connections como medida temporal.
  3. Optimiza: Revisa plugins, consultas y usa caché para reducir la demanda de conexiones.
  4. Escala: Si el problema es recurrente, considera mejorar los recursos de tu servidor.

[WARNING] Evita reiniciar MySQL constantemente como única solución. Es un parche que no resuelve la causa raíz y puede provocar inestabilidad. Trata siempre de encontrar y solucionar el origen del problema.

Con estos pasos, podrás mantener tu web estable y rápida, incluso en momentos de alto tráfico. Si después de seguir esta guía el problema continúa, no dudes en contactar con el soporte técnico de tu proveedor de hosting; para eso están. ¡Mucha suerte!

¿Necesitas ayuda?Son dos de nuestros técnicos, Agustín y Mikel, y están disponibles para resolver cualquier problema.

Hablar con ellos ahora
Agustín y Mikel