Cómo solucionar el error 'Too many connections' en MySQL para WordPress y PrestaShop
¿Qué significa el error "Too many connections" en MySQL?
Imagina que tu web es un restaurante muy popular. MySQL (la "cocina" donde se guardan los datos de tu WordPress o PrestaShop) tiene un número limitado de "mesas" (conexiones) para atender a los "clientes" (visitas y procesos de tu web). Cuando llegan más peticiones de las que puede atender a la vez, se satura y lanza el mensaje: "Too many connections".
Este error es uno de los más comunes en el alojamiento web y puede aparecer de repente, dejando tu tienda o blog completamente inaccesible. La buena noticia es que, en la mayoría de los casos, tiene solución. En esta guía te explicamos paso a paso cómo diagnosticarlo y arreglarlo, tanto si usas WordPress como PrestaShop.
[INFO] Este error no significa que tu web haya sido hackeada ni que hayas perdido datos. Es una señal de que el servidor de bases de datos está agotado temporalmente. Con calma y siguiendo estos pasos, lo resolverás.
¿Por qué ocurre el error "Too many connections" en MySQL?
Antes de lanzarnos a arreglar nada, es importante entender las causas. Esto te ayudará a prevenir que vuelva a ocurrir. Las razones más habituales son:
- Picos de tráfico inesperados: Un artículo que se vuelve viral o una campaña de marketing agresiva puede generar cientos de peticiones simultáneas.
- Consultas lentas o mal optimizadas: Un plugin o módulo de tu tienda está haciendo consultas muy pesadas a la base de datos, ocupando una conexión durante mucho tiempo.
- Conexiones que no se cierran: Algún script o plugin está dejando "hilos" abiertos que no se liberan correctamente.
- El límite predeterminado es muy bajo: En muchos alojamientos compartidos, el límite por defecto (
max_connections) es de 150 o incluso menos. Si tu web tiene muchos procesos, es fácil alcanzarlo. - Ataques de fuerza bruta o bots: Los bots maliciosos pueden estar intentando acceder a tu
wp-login.phpo a la administración de PrestaShop, generando un aluvión de conexiones.
Primeros auxilios: Cómo recuperar el acceso a tu web ya
Si tu web está caída en este momento, necesitas una solución rápida. No te preocupes, hay dos métodos inmediatos para "desatascar" MySQL.
1. Reiniciar MySQL desde tu panel de control (Syspanel)
Si tu hosting utiliza Syspanel (antes conocido como HestiaCP), el proceso es muy sencillo.
[INFO] Recuerda que para acceder a Syspanel, debes escribir
https://tu-dominio.com:2106en tu navegador. El puerto 2106 es el que utiliza este panel de control.
Sigue estos pasos:
- Accede a tu panel Syspanel con tu usuario y contraseña.
- Busca la sección de "Servicios" o "Servidores" en el menú lateral.
- Localiza el servicio MySQL o MariaDB (el motor de bases de datos).
- Haz clic en el botón "Reiniciar" o "Restart".
Al reiniciar, se liberarán todas las conexiones bloqueadas. Es como apagar y encender el restaurante para que las mesas queden libres. Tu web debería volver a cargar en unos segundos.
2. Forzar la liberación de conexiones desde la terminal (SSH)
Si tienes acceso SSH (más avanzado), puedes ejecutar un comando para ver y matar los procesos que están consumiendo conexiones.
mysql -u root -p -e "SHOW PROCESSLIST;"
Este comando te mostrará una tabla con todos los procesos activos. Verás columnas como Id, User, Host, db y Command. Para eliminar un proceso específico, usa:
mysql -u root -p -e "KILL [ID_DEL_PROCESO];"
[WARNING] Si no te sientes cómodo con SSH, es mejor que contactes con tu proveedor de hosting. Matar el proceso equivocado podría causar otros problemas.
Solución definitiva: Ajustar el límite de conexiones
Reiniciar es un parche temporal. Para evitar que el error "too many connections mysql" vuelva a aparecer, necesitas aumentar el límite máximo de conexiones permitidas.
Cómo modificar max_connections
El valor por defecto suele ser insuficiente para sitios con cierto volumen. Te recomendamos aumentarlo a 300 o 500, dependiendo de los recursos de tu servidor.
[WARNING] Aumentar este número consume más memoria RAM. Si tu plan de hosting es muy básico, un valor demasiado alto podría ralentizar el servidor. Lo ideal es empezar con 300 y monitorizar.
Método A: Desde Syspanel (Recomendado para principiantes)
- Accede a tu Syspanel.
- Ve a la sección de "Base de datos" o "DB Server".
- Busca la opción de "Configuración" o "Edit Configuration".
- Se abrirá un archivo de texto (probablemente
my.cnfomy.ini). Busca la línea que dicemax_connections=150. - Cámbiala por
max_connections=300. - Guarda el archivo y reinicia MySQL de nuevo (como en el paso anterior).
Método B: Desde la línea de comandos (SSH)
Conecta por SSH y ejecuta:
mysql -u root -p
Dentro de la consola de MySQL, escribe:
SET GLOBAL max_connections = 300;
Este cambio es inmediato, pero no es permanente (se pierde al reiniciar el servidor). Para hacerlo permanente, debes editar el archivo de configuración my.cnf (normalmente en /etc/mysql/my.cnf o /etc/my.cnf) y añadir la línea bajo la sección [mysqld]:
[mysqld]
max_connections = 300
Optimización específica para WordPress
Si tu web es WordPress, el error suele estar relacionado con plugins o con el tema. Aquí tienes una checklist para solucionar el error mysql wordpress:
1. Identifica los plugins problemáticos
Los plugins de caché, estadísticas o respaldo son los que más conexiones consumen. Desactívalos todos y ve activándolos uno a uno para ver cuál causa el problema.
- Ve a Plugins → Plugins instalados.
- Selecciona todos y en "Acciones en bloque" elige "Desactivar".
- Comprueba si el error desaparece.
- Reactiva uno a uno y monitoriza.
2. Optimiza la tabla de opciones
Con el tiempo, la tabla wp_options se llena de datos basura. Puedes usar un plugin como WP-Optimize o ejecutar una consulta SQL directamente para limpiarla.
3. Revisa los logs de error
En tu panel de control, busca la carpeta logs y abre el archivo error.log. Ahí verás si hay algún plugin que esté generando consultas masivas.
Optimización específica para PrestaShop
PrestaShop es más pesado que WordPress y consume más conexiones por defecto. Aquí tienes algunas claves:
1. Ajusta los parámetros de conexión a la base de datos
En el archivo config/settings.inc.php, busca estas líneas:
define('_DB_SERVER_', 'localhost');
define('_DB_NAME_', 'tu_basededatos');
define('_DB_USER_', 'tu_usuario');
define('_DB_PASSWD_', 'tu_password');
define('_DB_PREFIX_', 'ps_');
No cambies estos valores, pero asegúrate de que el servidor de base de datos es localhost y no una IP remota, ya que esto puede ralentizar las conexiones.
2. Activa el modo mantenimiento
Si el error ocurre durante un pico de tráfico, activa el modo mantenimiento de PrestaShop para que los visitantes no saturen el servidor mientras lo arreglas. Ve a Parámetros avanzados → Mantenimiento y actívalo.
3. Reduce el número de conexiones persistentes
PrestaShop tiene una opción para usar conexiones persistentes. Desactívala en Parámetros avanzados → Rendimiento. Las conexiones persistentes pueden agotar rápidamente el límite de MySQL.
Prevención a largo plazo: Buenas prácticas
Una vez que hayas solucionado el error, es vital que implementes estas medidas para que no vuelva a ocurrir:
- Instala un plugin de caché: Para WordPress, usa W3 Total Cache o WP Super Cache. Para PrestaShop, activa la caché interna en Parámetros avanzados → Rendimiento.
- Usa un CDN: Cloudflare o StackPath pueden absorber el tráfico estático (imágenes, CSS, JS) y reducir la carga en tu servidor.
- Actualiza todo: Mantén WordPress, los plugins y el tema actualizados. Las versiones antiguas suelen tener fugas de memoria.
- Limpia la base de datos regularmente: Elimina revisiones antiguas de entradas, comentarios spam y transients caducados.
- Monitoriza tus recursos: Si ves que llegas al límite de conexiones con frecuencia, es hora de contratar un plan de hosting superior o un servidor VPS.
Preguntas frecuentes (FAQ)
¿Cuál es el límite de conexiones MySQL en mi hosting?
Puedes verificarlo ejecutando esta consulta en phpMyAdmin o en la consola de MySQL:
SHOW VARIABLES LIKE 'max_connections';
¿Cuántas conexiones MySQL son normales para una web pequeña?
Para una web pequeña o mediana, entre 50 y 150 conexiones son más que suficientes. El problema surge cuando hay consultas lentas que ocupan una conexión durante mucho tiempo.
¿Qué hago si el error persiste después de aumentar el límite?
Si has aumentado max_connections a 500 y el error continúa, el problema no es el límite, sino que hay un script que está haciendo demasiadas consultas. Revisa los logs del servidor para identificar la IP o el proceso culpable.
¿Puedo usar "persistent connections" en WordPress?
No es recomendable. Aunque pueden mejorar el rendimiento en algunos casos, en la mayoría de los entornos de hosting compartido causan más problemas que beneficios. Déjalas desactivadas.
¿Debo contactar con mi proveedor de hosting?
Si has seguido todos estos pasos y el error persiste, o si no tienes acceso SSH ni a Syspanel, contacta con tu proveedor. Ellos pueden ajustar la configuración de MySQL a nivel de servidor y verificar si hay algún ataque DDoS en curso.
Conclusión
El error "Too many connections" en MySQL puede ser frustrante, pero como has visto, tiene soluciones claras y accionables. Recuerda la secuencia lógica:
- Reinicia MySQL para recuperar el acceso.
- Aumenta el límite de conexiones.
- Identifica la causa raíz (plugin, consulta, tráfico).
- Optimiza tu web para reducir el consumo.
Con estas herramientas, podrás mantener tu WordPress o PrestaShop funcionando sin interrupciones, incluso en los momentos de mayor tráfico. Si tienes dudas, no dudes en dejar un comentario o contactar con tu soporte técnico. ¡Tu web volverá a estar en línea en un abrir y cerrar de ojos!
[TIP] Guarda este artículo en tus favoritos. La próxima vez que tu web se caiga, sabrás exactamente qué hacer. Y recuerda: la prevención es siempre mejor que la cura.
