Cómo solucionar el error 'Too many connections' en bases de datos MySQL (cPanel, Plesk)
¿Qué significa el error "Too many connections" en MySQL?
Si estás leyendo esto, es muy probable que hayas visto un mensaje como "Too many connections" al intentar acceder a tu sitio web, a phpMyAdmin o a alguna aplicación que use una base de datos. No te preocupes, es uno de los errores más comunes en el mundo del hosting y, además, tiene solución.
Este error es literalmente lo que dice: tu servidor de bases de datos MySQL (o MariaDB, su variante más moderna) ha alcanzado el límite máximo de conexiones simultáneas permitidas. Imagina que la base de datos es un restaurante con un número limitado de mesas. Cuando todas las mesas están ocupadas, los nuevos clientes tienen que esperar fuera. Si el restaurante está lleno y no se libra ninguna mesa, el nuevo cliente recibe un "lo sentimos, estamos llenos". Eso es exactamente lo que le ocurre a tu web.
Pero, ¿por qué se llena? Las causas más habituales suelen ser:
- Un plugin o script mal configurado que no cierra las conexiones a la base de datos correctamente.
- Un aumento repentino de tráfico en tu sitio web (por ejemplo, una noticia viral o una campaña de marketing).
- Consultas SQL muy lentas o ineficientes que mantienen las conexiones abiertas durante mucho tiempo.
- Procesos zombis o en estado "Sleep" que se quedan colgados en el servidor sin hacer nada, ocupando un "hueco".
- Ataques de fuerza bruta o bots que intentan conectarse masivamente.
En este artículo, te voy a guiar paso a paso para que puedas solucionar el error "too many connections" tanto en cPanel como en Plesk, los dos paneles de control más utilizados en el hosting. Vamos a ello.
Primeros auxilios: Solución rápida y temporal
Antes de ponernos técnicos, tienes que saber que la mayoría de los paneles de control tienen un botón de "reinicio" que, aunque no arregla la causa raíz, te devuelve el servicio en cuestión de segundos. Esto es vital si tu web está caída y necesitas restaurarla urgentemente mientras investigas.
Para cPanel: Reiniciar MySQL desde el panel
- Accede a tu cPanel (normalmente en
tudominio.com/cpanelotudominio.com:2083). - Busca la sección "Métricas" o "Estado del servidor" y haz clic en "Estado de MySQL" o "SQL Services".
- Verás un botón que dice "Reiniciar MySQL" (o "Restart MySQL"). Haz clic en él.
- Espera unos segundos y el servicio se reiniciará, liberando todas las conexiones colgadas.
[TIP]
Esta acción es como apagar y encender el router. Es la solución más rápida para que tu web vuelva a funcionar de inmediato, pero no soluciona el problema de fondo. Si el error reaparece en unas horas, sigue leyendo.
Para Plesk: Reiniciar el servicio desde la terminal
En Plesk, el proceso es ligeramente diferente, ya que no siempre hay un botón gráfico visible en todas las versiones.
- Accede a tu Plesk (normalmente en
tudominio.com:8443). - Ve a "Herramientas y ajustes" > "Administración del servidor" > "Servicios".
- Busca el servicio "mysql" o "mariadb" en la lista.
- Haz clic en el icono de "Reiniciar" (suele ser un círculo con una flecha).
[WARNING]
Si no encuentras la opción gráfica, tendrás que usar el acceso SSH (terminal). Conecta por SSH y ejecuta el comandosudo systemctl restart mysql(omariadb). Si no sabes qué es SSH, contacta con tu proveedor de hosting para que lo hagan ellos, ya que es la opción más segura si no tienes experiencia.
Solución definitiva: Aumentar el límite de conexiones (max_connections)
Una vez que tu web esté de nuevo en línea, es hora de evitar que esto vuelva a pasar. La solución más directa es aumentar el número máximo de conexiones permitidas. Es un cambio de configuración que se hace en el archivo my.cnf (o my.ini en Windows).
Localizar y editar el archivo de configuración
- Accede por SSH a tu servidor. Necesitarás las credenciales de root o de un usuario con permisos de administración.
- Localiza el archivo de configuración. Normalmente se encuentra en una de estas rutas:
/etc/mysql/my.cnf/etc/my.cnf/etc/mysql/mysql.conf.d/mysqld.cnf(en Ubuntu/Debian moderno)
- Abre el archivo con un editor de texto como
nanoovim. Por ejemplo:sudo nano /etc/mysql/my.cnf.
Modificar el valor de "max_connections"
- Dentro del archivo, busca la línea que dice
max_connections = 150(o el número que tenga). - Si no existe, añádela en la sección
[mysqld]. - Cambia el número. ¿Cuánto? Depende de la memoria RAM de tu servidor. Una cifra segura para empezar es 250 o 300. Si tu servidor tiene mucha RAM (8GB o más), puedes subirla a 500.
[mysqld]
max_connections = 300
- Guarda el archivo (en
nano, presionaCtrl + Oy luegoEnter, y para salirCtrl + X). - Reinicia MySQL para que los cambios surtan efecto. Usa el comando
sudo systemctl restart mysqlo el que hayas usado antes.
[INFO]
No te pases con el número. Cada conexión consume memoria. Si pones un número demasiado alto, podrías agotar la RAM del servidor y provocar que se caiga por completo. Si no estás seguro, empieza por un valor moderado y ve monitorizando.
Método alternativo desde cPanel (WHM)
Si tu hosting es gestionado y tienes acceso a WHM (Web Host Manager) (el panel de administración de cPanel), el proceso es mucho más visual y seguro.
- Accede a WHM (normalmente en
tudominio.com:2087). - En el buscador, escribe "Tweak Settings".
- Busca la opción "Maximum SQL connections".
- Cámbiala al valor deseado y haz clic en "Save".
Solucionar el error desde la raíz: Identificar las conexiones problemáticas
Aumentar el límite es un parche, pero lo ideal es saber qué está consumiendo todas las conexiones. Para ello, vamos a usar la consola de MySQL.
- Accede por SSH y ejecuta el siguiente comando para entrar en la consola de MySQL:
mysql -u root -p(te pedirá la contraseña de root de la base de datos). - Una vez dentro, ejecuta el siguiente comando para ver todas las conexiones activas:
SHOW PROCESSLIST;
Este comando te mostrará una tabla con información como el ID, el Usuario, el Host, la Base de datos y el Comando que está ejecutando cada conexión. Lo que te interesa es la columna "Command". Verás valores como:
- Sleep: La conexión está abierta pero sin hacer nada. Es la más común y la que suele llenar el límite.
- Query: Está ejecutando una consulta SQL. Si ves muchas, puede que haya un script ineficiente.
- Locked: Está esperando a que otra consulta libere una tabla. Esto puede indicar un problema de bloqueos.
Matar procesos zombis
Si ves muchas conexiones en estado "Sleep" que llevan mucho tiempo (mira la columna "Time"), puedes eliminarlas para liberar espacio. Para ello, ejecuta:
KILL [ID_del_proceso];
[WARNING]
Cuidado con lo que matas. No mates procesos que estén ejecutando una consulta "Query" importante, o podrías corromper datos. Céntrate solo en los que están en "Sleep" y llevan un tiempo excesivo (más de 100 segundos, por ejemplo).
La causa más común: WordPress y sus plugins
Si usas WordPress, el principal sospechoso es un plugin que no gestiona bien las conexiones. Los más comunes son los de caché, los de seguridad o los de migración. Te recomiendo:
- Desactivar todos los plugins desde el panel de administración de WordPress.
- Comprobar si el error desaparece. Si es así, reactiva los plugins uno a uno hasta encontrar al culpable.
- Una vez identificado, busca una alternativa o actualízalo a la última versión.
Solución avanzada: Reducir el tiempo de espera (wait_timeout)
Otra forma de evitar que las conexiones se acumulen es reducir el tiempo que MySQL espera antes de cerrar una conexión inactiva. Por defecto, suele ser de 28800 segundos (8 horas). Es demasiado tiempo.
Puedes bajarlo a 60 o 120 segundos. Así, las conexiones en estado "Sleep" se cerrarán solas mucho antes.
- Edita de nuevo el archivo
my.cnf. - Añade o modifica estas líneas en la sección
[mysqld]:
wait_timeout = 60
interactive_timeout = 60
- Guarda y reinicia MySQL.
[TIP]
Esta es una de las mejores soluciones para el error "too many connections mysql", porque ataca el problema de las conexiones que se quedan "dormidas" y no se liberan.
¿Qué hacer si no tienes acceso SSH o a WHM?
Si tu plan de hosting es compartido, es muy probable que no tengas acceso a SSH ni a la configuración del servidor. En ese caso, tu única opción es contactar con el soporte técnico de tu proveedor.
Cuando les escribas, diles algo como:
"Hola, estoy recibiendo el error 'Too many connections' en mi base de datos MySQL. He intentado reiniciar el servicio desde cPanel/Plesk pero sigue ocurriendo. ¿Podéis aumentar el max_connections o revisar si hay algún proceso que esté saturando el servidor? Gracias."
Es un mensaje claro y conciso que cualquier técnico entenderá. Ellos tienen acceso a las herramientas de administración y podrán solucionarlo por ti.
Preguntas frecuentes (FAQ)
¿El error "Too many connections" es peligroso?
No, no es peligroso para tus datos. Es un problema de disponibilidad temporal. Tus datos no se corrompen, simplemente la web no puede acceder a ellos hasta que se libere una conexión.
¿Por qué me pasa esto si mi web no tiene mucho tráfico?
Aunque tu web no tenga mucho tráfico, un solo plugin mal codificado puede abrir decenas de conexiones en un bucle infinito. Es el caso más común en WordPress.
¿Puedo evitar el error cambiando el límite a un número gigante?
No te lo recomiendo. Cada conexión consume memoria y si pones un límite demasiado alto, podrías agotar la RAM del servidor y causar un fallo generalizado. Es mejor encontrar la causa raíz.
¿El error puede estar causado por un ataque DDoS?
Sí, es posible. Un ataque DDoS puede saturar el servidor con miles de peticiones de conexión. En ese caso, la solución es contactar con tu proveedor para que activen protecciones a nivel de red.
¿Mencionas Syspanel? ¿Qué es?
He visto que me preguntas por Syspanel. Es un panel de control alternativo que algunos proveedores usan. Si tu hosting usa Syspanel, el acceso es igual que cPanel, pero el puerto es el 2106 (por ejemplo, tudominio.com:2106). Los pasos para reiniciar MySQL son similares, busca la sección de "Servicios" o "Bases de Datos". En el caso de Syspanel, es común que el botón de reinicio esté en "Herramientas" > "Servicios".
Resumen final: Plan de acción
Para terminar, te dejo un resumen de los pasos a seguir si te vuelves a encontrar con este error:
- Reinicia MySQL desde cPanel/Plesk para una solución inmediata.
- Aumenta el límite de
max_connectionsen el archivo de configuración. - Reduce el
wait_timeoutpara que las conexiones inactivas se cierren solas. - Investiga con
SHOW PROCESSLISTqué está consumiendo las conexiones. - Desactiva plugins de WordPress si es tu caso para encontrar al culpable.
- Si no puedes acceder al servidor, contacta con tu proveedor de hosting con un mensaje claro y específico.
Espero que esta guía te haya sido de gran ayuda. Recuerda que la paciencia es clave, y que con estos pasos, el error "Too many connections" dejará de ser una pesadilla para convertirse en un problema más que ya sabes resolver. ¡Mucha suerte!
