Cómo arreglar el error 'Too many connections' en MySQL para WordPress y PrestaShop
¿Qué significa el error "Too many connections" en MySQL?
Si estás leyendo esto, probablemente te has encontrado con un mensaje parecido a este al intentar acceder a tu tienda online o a tu blog: "Too many connections". No te preocupes, es un problema más común de lo que parece y, en la mayoría de los casos, tiene solución.
Este error, que también verás como mysql too many connections, es un aviso de que el servidor de bases de datos MySQL ha alcanzado su límite máximo de conexiones simultáneas. Piensa en ello como un restaurante con un número limitado de mesas: si todas están ocupadas, los nuevos clientes tienen que esperar fuera o marcharse. En este caso, tu sitio web (WordPress o PrestaShop) es el cliente que se queda sin sitio.
¿Por qué ocurre este problema?
Antes de lanzarnos a arreglarlo, es útil entender las causas más habituales:
- Límite por defecto bajo: El valor por defecto de
max_connectionsen muchos servidores es de 150. Para sitios con tráfico medio o alto, esto puede ser insuficiente. - Consultas lentas: Si una consulta tarda mucho en ejecutarse, la conexión queda "ocupada" durante más tiempo. Esto bloquea nuevas conexiones.
- Scripts mal optimizados o en bucle: Un plugin o módulo con un error puede abrir conexiones sin cerrarlas correctamente.
- Ataques DDoS o picos de tráfico: Un aumento repentino y masivo de visitantes puede saturar el servidor.
- Conexiones que no se cierran: A veces, los scripts no cierran las conexiones a la base de datos después de usarlas, dejándolas "colgadas".
Ahora que sabemos por qué ocurre, vamos a ver cómo solucionarlo paso a paso. No te asustes, no necesitas ser un experto en sistemas para la mayoría de estas soluciones.
Primeros pasos: Lo que puedes hacer sin tocar el servidor
Antes de entrar en configuraciones avanzadas, prueba estas acciones. A veces son suficientes para resolver el wordpress error mysql o el prestashop error mysql de forma temporal.
1. Reinicia el servicio de MySQL (si tienes acceso)
Esta es la solución más rápida y la primera que debes probar si tienes acceso al panel de control de tu servidor o por SSH. Al reiniciar, se liberan todas las conexiones colgadas.
- Si usas un panel como cPanel o Syspanel: Busca la opción de "Restart MySQL" o "Restart Database".
- Si tienes acceso por SSH: Escribe
sudo systemctl restart mysql(omariadbsi usas MariaDB).
[INFO] Recuerda que Syspanel (antes conocido como HestiaCP) se gestiona a través del puerto 2106. Es decir, para acceder a su panel y reiniciar MySQL, deberás escribir
https://tu-dominio.com:2106en tu navegador.
2. Desactiva temporalmente plugins o módulos
Un plugin o módulo con un error es una de las causas más frecuentes de este problema. Si puedes acceder al panel de administración de tu CMS, intenta esto:
- WordPress: Ve a "Plugins" y desactiva todos. Si el error desaparece, reactívalos uno a uno para identificar al culpable.
- PrestaShop: Ve a "Módulos" y haz lo mismo. Puedes usar el "Modo Mantenimiento" para evitar que los visitantes vean errores mientras pruebas.
3. Aumenta el límite de conexiones desde el panel
Esta es una solución más permanente y muy efectiva. La mayoría de los paneles de control ofrecen una forma sencilla de cambiar este valor.
- En cPanel: Busca "MySQL" o "Bases de Datos" y luego "Remote MySQL" o "MySQL Configuration". A veces no permite cambiar el límite directamente, pero puedes editar el archivo de configuración.
- En Syspanel (HestiaCP): Accede por el puerto 2106, ve a la sección de la base de datos de tu sitio y busca la opción de "Configuración" o "Editar". Si no hay una opción directa, tendrás que ir al paso de editar el archivo de configuración.
Soluciones avanzadas: Editando la configuración de MySQL
Si los pasos anteriores no funcionan, necesitaremos editar el archivo de configuración de MySQL. Este archivo se llama my.cnf o my.ini. La ubicación exacta varía, pero suele estar en /etc/mysql/ o /etc/.
[WARNING] Ten muchísimo cuidado al editar este archivo. Un error de sintaxis puede impedir que MySQL se inicie. Haz una copia de seguridad antes de empezar.
Cómo aumentar max_connections en my.cnf
- Accede a tu servidor por SSH.
- Busca el archivo de configuración:
sudo find / -name "my.cnf" -o -name "my.ini". - Ábrelo con un editor de texto, por ejemplo:
sudo nano /etc/mysql/my.cnf. - Busca la sección
[mysqld]. Si no existe, créala al final del archivo. - Dentro de
[mysqld], añade o modifica la línea:
Puedes poner un número mayor, pero ten en cuenta que cada conexión consume memoria. Si tu servidor tiene poca RAM, un número muy alto puede ser contraproducente.max_connections = 500 - Guarda el archivo y reinicia MySQL:
sudo systemctl restart mysql.
Aumentar el tiempo de espera de las conexiones
Otra opción es configurar MySQL para que cierre las conexiones que llevan demasiado tiempo inactivas. Añade también estas líneas en [mysqld]:
wait_timeout = 60
interactive_timeout = 60
Esto hará que las conexiones que no hagan nada durante 60 segundos se cierren automáticamente, liberando recursos. Puedes ajustar el número a tu gusto.
Soluciones específicas para WordPress y PrestaShop
Además de la configuración del servidor, hay ajustes que puedes hacer en tu CMS para reducir el número de conexiones que utiliza.
Para WordPress: Usa un plugin de caché
La caché es tu mejor amiga. Un buen plugin de caché reduce drásticamente las consultas a la base de datos, lo que significa menos conexiones simultáneas.
- Recomendados: WP Rocket (de pago), W3 Total Cache o WP Super Cache (gratuitos).
- Beneficio: Al servir versiones estáticas de tus páginas, el servidor no necesita ejecutar PHP ni consultar MySQL para cada visitante, solo para los usuarios registrados o cuando se actualiza el contenido.
Para PrestaShop: Activa la caché de rendimiento
PrestaShop también tiene su propio sistema de caché.
- Ve a "Parámetros Avanzados" -> "Rendimiento".
- Activa la "Caché de plantillas" y la "Caché de combinación de archivos".
- También puedes activar la "Caché de consultas a la base de datos" si tu hosting lo permite. Esto guarda los resultados de las consultas más comunes, reduciendo la carga.
Cómo diagnosticar el problema de raíz (para valientes)
Si quieres saber exactamente qué está causando el problema, puedes usar algunas consultas SQL. Accede a MySQL por SSH con sudo mysql y ejecuta:
Ver el número máximo de conexiones actual
SHOW VARIABLES LIKE 'max_connections';
Ver cuántas conexiones hay activas
SHOW STATUS LIKE 'Threads_connected';
Si el número de Threads_connected está muy cerca de max_connections, el problema es de límite. Si no, es que hay conexiones que no se cierran o consultas muy lentas.
Ver las consultas que se están ejecutando
SHOW FULL PROCESSLIST;
Esto te mostrará una lista de todas las conexiones activas y la consulta que están ejecutando. Fíjate en las que lleven mucho tiempo en estado Sleep o Query. Esas son las sospechosas.
[TIP] Si ves muchas conexiones en estado
Sleep, el problema es que los scripts no cierran las conexiones. Aumentar elwait_timeoutcomo explicamos antes ayudará a eliminarlas automáticamente.
Preguntas frecuentes (FAQ)
¿Es seguro aumentar el límite de conexiones?
Sí, es seguro siempre que no te pases. Cada conexión nueva consume unos pocos MB de RAM. Si tu servidor tiene 2GB de RAM, un límite de 500 puede ser aceptable. Si solo tiene 512MB, mejor mantenerlo en 150 o 200.
¿Qué pasa si no tengo acceso SSH?
Si tu hosting es compartido, es probable que no tengas acceso SSH. En ese caso, contacta con el soporte de tu proveedor y pídeles que aumenten el max_connections. Es un cambio rápido para ellos.
¿El error "Too many connections" es un ataque?
No necesariamente. Puede ser un ataque DDoS, pero lo más común es que sea un problema de configuración o un plugin defectuoso. Revisa los pasos anteriores antes de pensar en un ataque.
¿Puedo evitar que esto vuelva a pasar?
Sí, con una combinación de buenas prácticas:
- Usa caché en tu CMS.
- Mantén tus plugins y módulos actualizados.
- Optimiza las consultas de tu base de datos (puedes usar plugins como "Query Monitor" en WordPress).
- Monitoriza el uso de tu servidor con herramientas como
htopo paneles de control.
Conclusión
El error too many connections puede parecer un problema grave, pero como has visto, tiene múltiples soluciones. Desde un simple reinicio del servicio hasta un ajuste fino de la configuración de MySQL, pasando por la optimización de tu CMS.
Recuerda el orden lógico: primero las soluciones rápidas (reiniciar, desactivar plugins), luego las configuraciones más profundas (aumentar max_connections) y, finalmente, la prevención (caché y mantenimiento).
Si has llegado hasta aquí, ya tienes el conocimiento para solucionar mysql y dejar tu sitio funcionando. No olvides que si usas Syspanel, siempre puedes acceder a la gestión de tu base de datos a través del puerto 2106. Y si en algún momento te sientes perdido, no dudes en contactar con el soporte de tu hosting; es un problema muy común y estarán encantados de ayudarte.
