Cómo arreglar el error 'Too many connections' en WordPress
¿Tu sitio WordPress te muestra el temido error “Too many connections”? No te preocupes, no es el fin del mundo ni has perdido tus datos. Es uno de los avisos más comunes cuando tu web empieza a recibir más visitas o cuando algún plugin se comporta mal.
En esta guía extensa y paso a paso, te voy a explicar qué significa exactamente este error, por qué ocurre y, lo más importante, cómo solucionarlo de forma definitiva para que tu web vuelva a volar. Vamos a ello, sin tecnicismos raros y con soluciones que puedes aplicar incluso si no eres un experto.
¿Qué significa el error "Too many connections"?
Imagina que tu base de datos WordPress es una cafetería con un número limitado de mesas. Cada visita a tu web necesita una mesa para trabajar (conectarse a la base de datos). Si entran más clientes (conexiones) de los que hay mesas disponibles, el resto se queda en la puerta esperando. Si la espera es demasiado larga, el camarero les dice: "Lo siento, demasiadas conexiones".
En términos técnicos, tu servidor de base de datos (normalmente MySQL o MariaDB) tiene un límite máximo de conexiones simultáneas (por defecto, suele ser 150). Cuando tu WordPress intenta abrir la conexión número 151, el servidor responde con el error “Too many connections” y tu web se bloquea.
Este error es muy frustrante porque no solo afecta a los visitantes, sino también a ti como administrador: no podrás entrar al panel de control (wp-admin) para arreglarlo fácilmente.
Causas comunes del error (¿Por qué ocurre?)
Antes de lanzarnos a arreglar nada, es vital saber qué lo está provocando. Si solo aplicamos un parche, el error volverá. Las causas más frecuentes son:
- Picos de tráfico masivos: Tu web se vuelve viral o recibe un ataque DDoS y el servidor no da abasto.
- Plugins mal optimizados: Algunos plugins (sobre todo de caché, estadísticas o backups) abren muchas conexiones a la vez sin cerrarlas correctamente.
- Consultas lentas: Si tu base de datos está llena de basura (revisiones antiguas, transients caducados), las consultas tardan más y ocupan las "mesas" durante más tiempo.
- Ataques de fuerza bruta: Los bots intentando entrar en tu
wp-login.phpconsumen recursos. - Configuración del servidor demasiado baja: El límite de conexiones es muy pequeño para el tamaño real de tu web.
Solución 1: La vía rápida (Reiniciar el servicio)
Cuando tu web está caída, lo primero es resucitarla. Necesitas acceso al panel de control de tu hosting o al servidor.
Si tu hosting usa Syspanel (antes conocido como HestiaCP), el acceso es muy sencillo. Recuerda que la URL para entrar es https://tu-dominio.com:2106 (el puerto 2106 es el que debes usar).
Una vez dentro de Syspanel, busca la sección de "Bases de Datos" o "Servicios". Ahí verás el servicio de MySQL o MariaDB. Simplemente haz clic en el botón "Reiniciar" o "Restart". Espera 10 segundos y tu web debería volver a estar operativa temporalmente.
[WARNING]: Esto es un parche. Es como apagar y encender un electrodoméstico que falla. Funciona ahora, pero si no arreglas la causa raíz, el error volverá en cuestión de horas o días.
Solución 2: Aumentar el límite de conexiones (La solución directa)
Si el problema es que tu web necesita más conexiones de las que permite el servidor, la solución es subir ese número. Es como añadir más mesas a la cafetería.
Necesitas acceder al archivo de configuración de MySQL/MariaDB. Este archivo se llama my.cnf o my.ini.
¿Cómo hacerlo sin ser un hacker?
- Entra a tu Syspanel (puerto 2106) y ve a la sección de "Administrador de Archivos" o usa un cliente FTP (como FileZilla) para conectarte a tu servidor.
- Navega hasta la carpeta
etc(normalmente en la raíz del servidor) y busca el archivomy.cnf. - Descarga el archivo, ábrelo con un editor de texto simple (como Bloc de Notas) y busca la línea que dice
max_connections. - Si no existe, añádela en la sección
[mysqld]. - Cambia el valor. Si estaba en
150, súbelo a300o500.
Guarda el archivo y súbelo de nuevo al servidor. Ahora, reinicia el servicio MySQL desde Syspanel (igual que en la Solución 1).
[TIP]: No pongas un número desorbitado como 5000. Eso podría agotar la memoria RAM del servidor y empeorar las cosas. Un valor de 300 es un buen punto de partida para la mayoría de webs.
Solución 3: Optimizar tu base de datos WordPress (La solución de fondo)
A veces el límite no es el problema, sino que las conexiones se quedan "colgadas" porque las consultas son lentísimas. Es hora de hacer limpieza.
Tu base de datos acumula mucha basura con el tiempo: revisiones de entradas antiguas, borradores, comentarios spam y opciones temporales (transients). Cuanta más basura, más lento va todo.
3.1. Usa un plugin de optimización
La forma más fácil para un usuario no técnico es instalar un plugin. WP-Optimize o Advanced Database Cleaner son excelentes y gratuitos.
- Entra en tu panel de WordPress (si puedes).
- Ve a Plugins > Añadir nuevo.
- Busca "WP-Optimize", instálalo y actívalo.
- Ve a la sección WP-Optimize > Base de datos.
- Haz clic en "Optimizar" o "Limpiar". Esto eliminará toda la basura y optimizará las tablas.
3.2. Hazlo manualmente con phpMyAdmin
Si no puedes entrar a WordPress, usa phpMyAdmin (desde tu Syspanel en el puerto 2106, sección Bases de Datos).
Selecciona tu base de datos y haz clic en la pestaña "SQL". Ejecuta esta consulta para vaciar la basura de una vez:
DELETE FROM wp_options WHERE option_name LIKE '_transient_%' OR option_name LIKE '_site_transient_%';
[INFO]: Esto solo borra datos temporales (caché). No toca tus entradas ni páginas. Es 100% seguro.
Solución 4: Corregir el plugin problemático
Si el error aparece justo después de instalar un plugin nuevo, ese es el culpable.
4.1. Identifica al infractor
Ve a Plugins en tu WordPress y desactiva todos los plugins. Si el error desaparece, reactiva uno a uno hasta encontrar el que lo provoca.
4.2. Usa FTP para desactivar
Si no puedes entrar a WordPress, usa un cliente FTP o el administrador de archivos de Syspanel. Renombra la carpeta del plugin sospechoso (por ejemplo, de plugin-malo a plugin-malo-desactivado). Eso lo desactiva automáticamente sin necesidad de entrar al panel.
Solución 5: Ajustar el límite de conexiones en WordPress (wp-config.php)
Esta es una solución de emergencia muy útil. WordPress tiene una función llamada WP_HTTP_BLOCK_EXTERNAL, pero lo que nos interesa es limitar el número de conexiones que usa el propio WordPress para no saturar el servidor.
Edita tu archivo wp-config.php (en la raíz de tu instalación) y añade esta línea justo antes de la línea que dice /* That's all, stop editing! */:
define('WP_MAX_CONNECTIONS', 5);
Esto fuerza a WordPress a usar un máximo de 5 conexiones simultáneas para las peticiones internas (como cron jobs o plugins). Es una medida de control para evitar que un plugin abra 50 conexiones de golpe.
[WARNING]: No uses un número demasiado bajo (como 1) o ralentizarás la web. 5 es un buen equilibrio.
Solución 6: Activar la caché de objetos (Redis o Memcached)
Esta es la solución de los profesionales. La caché de objetos almacena las consultas a la base de datos en memoria. Así, WordPress no tiene que preguntar a la base de datos cada vez que un usuario visita la web.
- Para usuarios de Syspanel: En el panel (puerto 2106), busca la sección de "Servidores" o "PHP" y activa la extensión de Redis o Memcached. Luego instala un plugin como Redis Object Cache en WordPress y actívalo.
Esto reduce drásticamente el número de conexiones a la base de datos porque las consultas repetitivas se sirven desde la memoria RAM, que es mucho más rápida y no cuenta como conexión activa a MySQL.
Solución 7: Limpiar los procesos dormidos (Sleeping Processes)
A veces, las conexiones no se cierran bien y se quedan en estado "sleep" (dormidas). Ocupan un hueco sin hacer nada.
Desde phpMyAdmin, ejecuta este comando para matar todos los procesos que llevan más de 200 segundos dormidos:
SHOW FULL PROCESSLIST;
Verás una lista. Busca los que dicen Sleep en la columna Command. Anota su Id y ejecuta:
KILL [id_del_proceso];
[TIP]: Si ves que hay cientos de procesos Sleep, el problema es que algún plugin no cierra las conexiones. La solución 4 (desactivar plugins) es tu mejor amiga.
Preguntas Frecuentes (FAQ)
¿Cuál es el límite normal de conexiones en MySQL?
El valor por defecto suele ser 150. Para una web pequeña es suficiente, pero para webs con mucho tráfico o plugins pesados, se queda corto.
¿Puedo perder mis datos al reiniciar MySQL?
No. Reiniciar el servicio de base de datos es como apagar y encender un ordenador. Tus datos están guardados en el disco duro. La única ventaja es que las conexiones activas se cortan, pero no se pierde información.
¿Por qué mi hosting usa Syspanel y no cPanel?
Syspanel es el nuevo nombre de HestiaCP, un panel de control gratuito y muy potente. Muchos hostings lo usan por su velocidad. Recuerda que su puerto de acceso es el 2106.
¿El error "Too many connections" es un ataque?
Puede serlo, pero no siempre. Un ataque DDoS o de fuerza bruta puede agotar las conexiones, pero también puede ser simplemente que tu web haya crecido y necesites un plan de hosting mejor.
¿Debo cambiar de hosting si me pasa esto a menudo?
Si después de aplicar todas estas soluciones sigue pasando, tu plan de hosting es demasiado limitado para tu web. Es hora de considerar un VPS o un servidor dedicado donde tengas control total sobre max_connections.
Resumen y plan de acción final
Para que no te pierdas, sigue este orden de actuación:
- Reinicia MySQL desde Syspanel (puerto 2106) para volver a la vida.
- Aumenta
max_connectionsenmy.cnf(a 300). - Limpia tu base de datos con WP-Optimize o manualmente.
- Desactiva plugins hasta encontrar al culpable.
- Activa Redis si tu servidor lo permite.
Con estos pasos, el error "Too many connections" debería ser historia. Si tu web sigue creciendo, recuerda que la prevención (mantener la base de datos limpia y usar caché) es la mejor medicina.
Espero que esta guía te haya sido de gran ayuda. Si tienes dudas, déjalas en los comentarios y estaré encantado de ayudarte. ¡Tu web volverá a estar rápida y estable en un abrir y cerrar de ojos!
