Cómo solucionar el error 'Too many connections' en MySQL (WordPress/PrestaShop)
¿Por qué aparece el error "Too many connections" en MySQL?
Si estás leyendo esto, es muy probable que tu web haya mostrado un mensaje parecido a este: "Error establishing a database connection" o directamente "Too many connections". No te asustes, es uno de los errores más comunes en servidores con WordPress o PrestaShop, y tiene solución.
Este error significa que tu servidor MySQL ha alcanzado el límite máximo de conexiones simultáneas permitidas. Cada vez que alguien visita tu web, se abre una conexión a la base de datos. Si tu web recibe muchos visitantes, o si hay algún plugin o proceso que no cierra bien las conexiones, el servidor se satura y llega a ese límite.
El valor por defecto de mysql max_connections suele ser 151 en muchas configuraciones, pero puede variar. Si tu hosting es compartido, es posible que ese número sea incluso menor. Cuando se supera, MySQL rechaza nuevas conexiones y tu web se cae, mostrando ese temido error.
A lo largo de esta guía te voy a explicar, paso a paso y sin tecnicismos innecesarios, cómo solucionar el error too many connections mysql, tanto si usas WordPress como PrestaShop. Vamos a ello.
Primero: identifica el alcance del problema
Antes de tocar nada, es importante que sepas qué está pasando exactamente. No es lo mismo que tu web tenga un pico puntual de visitas (por ejemplo, por una campaña de marketing) a que haya un plugin que esté haciendo consultas infinitas.
Señales típicas del error
- Tu web carga muy lenta o directamente no carga.
- Aparece el mensaje "Too many connections" en la pantalla.
- En wp-admin (si usas WordPress) no puedes acceder.
- En PrestaShop, la tienda muestra un error de base de datos.
Acceso rápido al servidor
Para diagnosticar y solucionar el problema, necesitas acceso a:
- El panel de control de tu hosting (cPanel, Plesk, o el que use tu proveedor).
- SSH (terminal) si tu hosting lo permite y sabes usarlo.
- Syspanel (antes conocido como HestiaCP), si tu servidor está gestionado con ese panel. Recuerda que el acceso a Syspanel se realiza a través del puerto 2106 (por ejemplo:
https://tu-servidor:2106).
[INFO] Si no tienes acceso SSH o no sabes qué es, no te preocupes. En este artículo te doy alternativas que puedes hacer desde el panel de control de tu hosting.
Solución 1: Aumentar el límite de conexiones (mysql max_connections)
La solución más directa y rápida es aumentar el número máximo de conexiones permitidas. Esto se hace modificando la configuración de MySQL.
Opción A: Desde el panel de control (la más fácil)
Si tu hosting usa cPanel, puedes hacerlo desde "MySQL Configuration" o "Remote MySQL", pero normalmente la opción está en "MultiPHP INI Editor" o en la sección de "MySQL".
Si usas Syspanel (HestiaCP), el proceso es similar:
- Accede a Syspanel a través del puerto 2106.
- Ve a la sección de "Bases de Datos" o "Servidor".
- Busca la opción de "Configuración de MySQL" o "MySQL Config".
- Localiza la variable
max_connections. - Cámbiala a un valor más alto, por ejemplo,
300o500. Ten cuidado: no pongas un número excesivo si tu servidor tiene poca RAM, porque podrías empeorar el rendimiento. - Guarda los cambios y reinicia MySQL.
Opción B: Desde SSH (si te atreves)
Si tienes acceso por terminal, puedes hacerlo con estos comandos:
mysql -u root -p
Cuando estés dentro de MySQL, ejecuta:
SHOW VARIABLES LIKE 'max_connections';
Esto te mostrará el valor actual. Para cambiarlo en caliente (sin reiniciar), puedes usar:
SET GLOBAL max_connections = 300;
Pero ojo, este cambio es temporal. Si reinicias MySQL, se perderá. Para hacerlo permanente, edita el archivo de configuración:
nano /etc/mysql/my.cnf
O en algunos sistemas:
nano /etc/my.cnf
Busca la línea max_connections y cámbiala. Si no existe, añádela en la sección [mysqld]:
[mysqld]
max_connections = 300
Guarda, sal y reinicia:
systemctl restart mysql
[WARNING] Aumentar
max_connectionsno es una solución mágica. Si el problema es que tu servidor no tiene recursos suficientes, aumentar el límite solo empeorará la situación. Es como poner más sillas en una habitación sin espacio: al final, nadie cabe. Úsalo con cabeza.
Solución 2: Identificar y matar procesos zombis
Muchas veces el error too many connections mysql se debe a procesos que se quedan "colgados". Esto ocurre cuando una consulta tarda demasiado o cuando un plugin no cierra la conexión correctamente.
Desde MySQL
Con acceso SSH, entra en MySQL:
mysql -u root -p
Y ejecuta:
SHOW PROCESSLIST;
Verás una lista de procesos activos. Si hay muchos en estado Sleep o Copying to tmp table, son sospechosos. Puedes matarlos con:
KILL ID_DEL_PROCESO;
Pero si hay decenas, es tedioso. Mejor usa esta consulta para matar todos los procesos inactivos de una vez:
SELECT CONCAT('KILL ', id, ';') FROM information_schema.processlist WHERE command = 'Sleep';
Luego copia y pega los resultados para ejecutarlos.
Desde PHPMyAdmin (alternativa sin SSH)
Si no tienes SSH, entra a PHPMyAdmin desde el panel de tu hosting. Busca la pestaña "Processes". Ahí podrás ver los procesos y terminarlos manualmente.
[TIP] Si no tienes ni SSH ni PHPMyAdmin, contacta con tu proveedor de hosting y pídeles que reinicien MySQL o que maten los procesos. Es una solución rápida mientras tú investigas el origen.
Solución 3: Optimizar WordPress para reducir conexiones
Si usas WordPress, hay varias cosas que puedes hacer para evitar que se sature el servidor.
3.1. Revisa tus plugins
Los plugins mal optimizados son la causa número uno de este error. Algunos hacen consultas constantes a la base de datos, incluso cuando no los estás usando.
Qué hacer:
- Desactiva todos los plugins desde el administrador de WordPress.
- Si el error desaparece, reactiva uno a uno hasta encontrar el culpable.
- Sustituye el plugin problemático por una alternativa ligera.
Si no puedes acceder a wp-admin, desactiva los plugins desde PHPMyAdmin:
- Ve a la tabla
wp_options. - Busca la fila
active_plugins. - Cambia su valor a
a:0:{}(esto desactiva todos los plugins).
3.2. Usa un plugin de caché
Instalar un plugin de caché (como W3 Total Cache o WP Super Cache) reduce drásticamente las consultas a la base de datos. Las páginas se guardan en HTML estático y no se consulta MySQL en cada visita.
3.3. Limpia la base de datos
Con el tiempo, tu base de datos se llena de basura: revisiones, borradores, comentarios spam, transients caducados. Limpia todo eso con plugins como WP-Optimize.
Solución 4: Optimizar PrestaShop para evitar el error
PrestaShop también puede sufrir este problema, especialmente en tiendas con mucho tráfico.
4.1. Activa el modo de mantenimiento
Si tu tienda está caída, actívalo desde el panel de administración (Parámetros avanzados > Rendimiento). Así evitas que nuevos visitantes intenten conectarse y saturen más el servidor.
4.2. Reduce el número de conexiones por usuario
En PrestaShop, puedes configurar el límite de conexiones simultáneas por usuario. Ve a "Parámetros avanzados" > "Rendimiento" y ajusta la opción "Límite de conexiones a la base de datos". Pon un número razonable, como 5 o 10.
4.3. Activa la caché de PrestaShop
En el mismo menú de rendimiento, activa la caché. Usa "Caché de archivos" si tu servidor no tiene Memcached o Redis instalado.
4.4. Revisa los módulos
Al igual que en WordPress, los módulos mal programados pueden dejar conexiones abiertas. Desactiva los que no uses y actualiza los que tengas.
Solución 5: Cambiar el host de la base de datos
En algunos casos, el problema no es tu web, sino que estás usando un hosting compartido y otros sitios del mismo servidor están saturando MySQL.
Opciones:
- Cambia a un hosting dedicado o VPS: tendrás más recursos y control.
- Usa una base de datos externa: si tu hosting lo permite, puedes contratar una base de datos en un servicio separado (como Amazon RDS) y conectar tu web a ella.
[INFO] Esta opción es más avanzada y puede ser más cara, pero es la solución definitiva si tu web crece y necesitas estabilidad.
Solución 6: Revisar la configuración de MySQL (my.cnf)
A veces el problema no es que falten conexiones, sino que las conexiones se quedan abiertas durante demasiado tiempo. Puedes ajustar variables de tiempo de espera en MySQL.
Variables clave:
wait_timeout: tiempo en segundos que MySQL espera antes de cerrar una conexión inactiva. Reducirlo a 60 o 120 puede ayudar.interactive_timeout: similar a la anterior, pero para sesiones interactivas.max_used_connections: muestra el máximo de conexiones usadas desde que se inició MySQL. Si está cerca del límite, sabrás que necesitas aumentarlo.
Para cambiar estos valores, edita el archivo my.cnf en la sección [mysqld]:
[mysqld]
wait_timeout = 60
interactive_timeout = 60
max_connections = 300
Reinicia MySQL después de los cambios.
Preguntas frecuentes (FAQ)
¿Puedo solucionar el error sin acceso SSH?
Sí. Puedes usar PHPMyAdmin para matar procesos, desactivar plugins, o aumentar max_connections si tu hosting te lo permite desde el panel. Si no, contacta con soporte.
¿Cuál es el valor ideal para max_connections?
Depende de tu servidor. Como regla general, con 2GB de RAM puedes tener 150-200 conexiones. Con 4GB, 300-400. No pongas un valor demasiado alto si tu servidor no tiene RAM suficiente.
¿Por qué mi web da este error aunque no tengo mucho tráfico?
Puede ser por un plugin o módulo que hace consultas en bucle, por bots que rastrean tu web de forma agresiva, o por un ataque DDoS. Revisa los procesos activos y el log de MySQL.
¿El error "Too many connections" puede dañar mi base de datos?
No, el error solo impide nuevas conexiones. Tus datos no se corrompen. Pero si el problema persiste, la web estará caída y perderás visitas y ventas.
¿Syspanel es lo mismo que HestiaCP?
Sí, Syspanel es el nuevo nombre comercial de HestiaCP. El acceso se realiza siempre a través del puerto 2106.
Resumen final y recomendaciones
El error too many connections mysql es un aviso de que tu servidor está al límite. La solución no es solo aumentar el número, sino encontrar la causa raíz.
Pasos recomendados en orden:
- Reinicia MySQL (desde el panel o SSH) para liberar conexiones de golpe.
- Aumenta
max_connectionsa un valor prudente. - Mata procesos zombis desde PHPMyAdmin o SSH.
- Optimiza tu web: plugins, caché, limpieza de base de datos.
- Monitoriza con herramientas como
mysqltunerpara saber si tu servidor está bien dimensionado.
Si después de todo esto el problema persiste, valora seriamente cambiar de plan de hosting o contratar un servidor VPS con más recursos. Una web que se cae constantemente no solo pierde visitas, sino también posicionamiento en Google.
[TIP] Guarda este artículo como referencia. Te será útil cada vez que tu web dé problemas de conexión con la base de datos. Y recuerda: ante la duda, contacta con tu proveedor de hosting. Ellos tienen herramientas para diagnosticar el problema mucho más rápido que tú.
Espero que esta guía te haya sido de ayuda. Si tienes más dudas, déjalas en los comentarios y te responderé encantado. ¡Buena suerte con tu web!
