🎨 Sysprovider Code
Sysprovider LogoWiki
🇪🇸Hosting español para ecommerce

Cómo solucionar el error 'Too many connections' en MySQL/MariaDB

Actualizado el 22 de abril de 2026

¿Te ha pasado que tu web se cae de repente y al intentar entrar en WordPress, WooCommerce o cualquier tienda online te aparece un mensaje críptico como "Too many connections"? No estás solo. Este es uno de los errores más comunes en el mundo del hosting compartido y VPS, y puede resultar aterrador si no sabes qué significa.

Pero tranquilo, respira. En esta guía extensa y pensada para principiantes absolutos, vamos a desmenuzar qué es este error, por qué ocurre y, lo más importante, cómo solucionarlo paso a paso sin necesidad de ser un gurú de la línea de comandos (aunque también te enseñaré trucos avanzados).

Al final de este artículo, tendrás un plan de acción claro para recuperar tu web y, de paso, optimizarla para que no vuelva a pasar.


¿Qué significa exactamente "Too many connections" en MySQL/MariaDB?

Para entenderlo fácil, imagina que tu base de datos es un restaurante muy popular. El restaurante tiene un número limitado de mesas (conexiones). Cuando llegan más clientes (peticiones de tu web) de los que puede atender a la vez, el maître (MySQL) tiene que decir: "Lo siento, estamos llenos".

Ese "estamos llenos" es el error Too many connections.

Técnicamente, MySQL y MariaDB tienen un límite máximo de conexiones simultáneas permitidas, definido por la variable max_connections. En muchos servidores de hosting compartido, este valor es bajo (por ejemplo, 30, 50 o 150). Si tu sitio web tiene un pico de tráfico, un plugin mal configurado o un ataque de fuerza bruta, todas esas "mesas" se ocupan y el servidor rechaza nuevas peticiones.

Este error es diferente a otros como "Error establishing a database connection". El primero indica que el servidor está saturado de conexiones; el segundo suele significar que los datos de acceso son incorrectos o que el servidor está caído.


Causas más comunes de este error en hosting

Antes de lanzarnos a la solución, es vital saber por qué ocurre. No tiene sentido apagar un incendio sin saber dónde está el fuego.

1. Picos de tráfico inesperados

Tu web se vuelve viral en redes sociales o tienes una oferta especial. De repente, cientos de usuarios intentan acceder a la vez. Cada página que cargan abre una o varias conexiones a la base de datos. Si el límite es de 30 y tienes 50 visitas simultáneas, el servidor colapsa.

2. Plugins o temas mal optimizados en WordPress

Este es el culpable número uno en sitios con CMS. Un plugin de caché mal configurado, un rastreador de SEO agresivo o un tema con demasiadas consultas a la base de datos pueden generar decenas de conexiones abiertas por cada visitante. Cada petición a una URL no debería abrir más de 2 o 3 conexiones, pero algunos plugins abren 10 o 20.

3. Consultas lentas que se quedan "colgadas"

Cuando una consulta SQL tarda demasiado (por ejemplo, una búsqueda compleja en una tabla enorme), la conexión queda bloqueada durante segundos o minutos. Si tienes varias consultas lentas a la vez, agotan el pool de conexiones rápidamente.

4. Ataques de fuerza bruta o bots maliciosos

Los bots que intentan adivinar contraseñas en wp-login.php o los scrapers que rastrean tu web sin límite de velocidad pueden saturar el servidor. Cada intento de conexión cuenta como una conexión a la base de datos.

5. Configuración del servidor demasiado baja

En algunos planes de hosting económicos, el valor max_connections es ridículamente bajo (incluso 10). Esto significa que tu web apenas puede soportar unos pocos visitantes simultáneos.


Solución Paso a Paso (Nivel Usuario: Sin acceso SSH)

Si no tienes conocimientos avanzados y tu hosting usa cPanel, Syspanel (antes conocido como HestiaCP) o Plesk, empieza por aquí. La mayoría de estos pasos son seguros y no requieren tocar archivos de configuración del sistema.

Paso 1: Reinicia tu aplicación (WordPress, PrestaShop, etc.)

El primer paso es el más obvio y a menudo el más efectivo: reiniciar el servicio que se está ejecutando.

  • En WordPress: Ve a tu panel de administración (si puedes acceder) y desactiva temporalmente los plugins. Si no puedes entrar, usa el administrador de archivos de tu hosting para renombrar la carpeta wp-content/plugins a plugins_off. Esto fuerza a WordPress a no cargar ningún plugin, liberando conexiones.
  • En cualquier CMS: Si tienes un sistema de caché (como LiteSpeed Cache o W3 Total Cache), vacíalo desde el panel de control del hosting si es posible.

[TIP]: Si el error persiste después de desactivar plugins, significa que el problema no es un plugin, sino un pico de tráfico o un ataque. Pasa al siguiente paso.

Paso 2: Aumentar el límite desde cPanel o el panel de control

Muchos paneles de control modernos permiten ajustar max_connections sin necesidad de tocar el archivo my.cnf.

  • En cPanel: Busca la sección "Remote MySQL" o "MySQL Database". A veces hay una opción para "Maximum number of connections". Si no la ves, no está disponible en tu plan.
  • En Syspanel (HestiaCP): Accede a tu panel a través del puerto 2106 (por ejemplo, https://tu-dominio.com:2106). Navega hasta la sección de bases de datos. Algunas versiones permiten ajustar la configuración avanzada de MySQL desde ahí.

[WARNING]: Si tu hosting es compartido, es muy probable que el proveedor no te permita cambiar este valor. Si es así, contacta con el soporte técnico y pídeles que aumenten max_connections temporalmente o que reinicien el servicio MySQL. A veces, un simple reinicio del servicio resuelve el bloqueo.

Paso 3: Optimiza tu web para reducir el número de conexiones

Si el error es recurrente, es hora de hacer una limpieza. Aquí tienes una lista de acciones prácticas:

  • Instala un plugin de caché: Los plugins de caché como WP Rocket, W3 Total Cache o LiteSpeed Cache reducen drásticamente las consultas a la base de datos. Un visitante que ve una página en caché no necesita abrir una conexión a MySQL.
  • Activa la caché de objetos: Si tu hosting lo soporta (Redis o Memcached), actívala. Esto almacena las consultas SQL en memoria, reduciendo el número de conexiones simultáneas.
  • Actualiza todo: Mantén WordPress, tus plugins y tu tema actualizados. Las versiones antiguas suelen tener consultas ineficientes.
  • Elimina plugins innecesarios: Cada plugin que consulta la base de datos en cada carga de página es un potencial devorador de conexiones. Desactiva todo lo que no uses.

Paso 4: Bloquea a los bots maliciosos

Un ataque de bots puede saturar tu base de datos en minutos. Puedes mitigarlo fácilmente:

  • Usa un firewall de aplicación web (WAF): Cloudflare gratuito es una excelente primera línea de defensa. Bloquea bots maliciosos y filtra el tráfico antes de que llegue a tu servidor.
  • Instala un plugin de seguridad (como Wordfence o Sucuri) y activa el bloqueo de IPs después de varios intentos fallidos de inicio de sesión.

Solución Avanzada (Nivel Administrador: Con acceso SSH)

Si tienes un VPS o un servidor dedicado y acceso al terminal, tienes el control total. Aquí es donde podemos ajustar la configuración de MySQL/MariaDB para resolver el problema de raíz.

1. Conectarse y diagnosticar

Lo primero es acceder al servidor por SSH (PuTTY en Windows o terminal en Mac/Linux) y conectarse a MySQL como root:

mysql -u root -p

Una vez dentro, ejecuta este comando para ver el límite actual:

SHOW VARIABLES LIKE 'max_connections';

Y este otro para ver cuántas conexiones hay en tiempo real:

SHOW STATUS LIKE 'Threads_connected';

Si Threads_connected está cerca o igual a max_connections, ahí tienes el problema.

2. Aumentar max_connections de forma segura

Para un cambio inmediato (sin reiniciar el servicio), ejecuta:

SET GLOBAL max_connections = 500;

Pero esto se pierde al reiniciar. Para hacerlo permanente, debes editar el archivo de configuración.

[INFO]: En sistemas Linux, el archivo suele ser /etc/mysql/my.cnf o /etc/my.cnf. En MariaDB, a veces es /etc/mysql/mariadb.conf.d/50-server.cnf.

Abre el archivo con tu editor favorito (nano o vim):

sudo nano /etc/mysql/my.cnf

Busca la sección [mysqld] y añade o modifica la línea:

[mysqld]
max_connections = 500

Guarda el archivo y reinicia el servicio:

sudo systemctl restart mysql

[WARNING]: No subas el valor a 2000 a lo loco. Cada conexión consume memoria RAM. Si tu servidor tiene 2GB de RAM, un valor de 500 es aceptable, pero 2000 podría agotar la memoria y provocar un "Out of memory" (OOM). La regla general es: max_connections * (buffer_pool + overhead) < RAM total.

3. Reducir el tiempo de espera (timeout)

Las conexiones "colgadas" son las peores enemigas. Puedes configurar que MySQL cierre automáticamente conexiones inactivas después de unos segundos.

Añade esto en la sección [mysqld]:

wait_timeout = 60
interactive_timeout = 60

Esto fuerza a que las conexiones que no hacen nada se cierren en 60 segundos, liberando espacio para nuevas peticiones. Es una solución excelente para sitios con mucho tráfico.

4. Optimizar el pool de conexiones (si usas PHP-FPM)

Si tu web usa PHP-FPM (lo normal en VPS), la configuración de pm.max_children está directamente relacionada. Si tienes 50 niños PHP-FPM y cada uno abre 2 conexiones a MySQL, necesitas al menos 100 conexiones MySQL. Ajusta ambos valores de forma coordinada.

Revisa tu archivo www.conf (normalmente en /etc/php/8.x/fpm/pool.d/) y ajusta:

pm.max_children = 20

Y luego ajusta max_connections en MySQL a un valor ligeramente superior (por ejemplo, 50).


Solución definitiva: Gestión de conexiones con un pooler

Si tienes una web de alto tráfico, la solución definitiva es usar un connection pooler (como ProxySQL o MariaDB MaxScale). Esto actúa como un intermediario: tu web se conecta al pooler, y el pooler gestiona un número fijo de conexiones a MySQL, reutilizándolas para miles de peticiones.

Esta es una solución más avanzada, pero es la única que escala de forma sostenible. Si llegas a este punto, probablemente necesites la ayuda de un administrador de sistemas.


Preguntas Frecuentes (FAQ) sobre este error

¿Por qué veo "too many connections mysql" en cPanel?

cPanel suele tener un límite bajo por defecto (como 30 o 50). Si tu web supera ese límite, verás el error. Contacta con tu proveedor de hosting para que lo aumenten o considera migrar a un plan VPS.

¿Cómo sé cuántas conexiones usa mi WordPress?

Puedes instalar un plugin de monitorización como "Query Monitor" que te muestra cuántas consultas SQL se ejecutan en cada página y cuántas conexiones se abren. Si ves números superiores a 10 por visita, tienes un problema de optimización.

¿Puedo solucionar el error error base de datos hosting solo con plugins?

Sí, a menudo la combinación de un buen plugin de caché y un plugin de seguridad puede reducir las conexiones en un 80%. Pero si el límite del servidor es muy bajo (menos de 20), aún podrías tener problemas en picos de tráfico.

¿Qué pasa si no tengo acceso a SSH y mi hosting no me deja cambiar nada?

Entonces tu única opción es ponerte en contacto con el soporte de tu hosting. Explícales que tu web está cayendo por "too many connections" y que necesitas que aumenten max_connections o que investiguen si hay alguna consulta maliciosa. Si es un problema recurrente, plantéate migrar a un plan mejor.

¿Es lo mismo en MariaDB que en MySQL?

Sí, el error y las variables son idénticas. MariaDB es un fork de MySQL, así que todos los comandos y configuraciones funcionan igual.


Conclusión y plan de acción

El error "Too many connections" no es el fin del mundo, pero es una señal de alarma. Te indica que tu arquitectura actual no está preparada para la demanda o que algo está mal configurado.

Resumen de acciones (por orden de prioridad):

  1. Reinicia el servicio MySQL (si puedes) o tu aplicación.
  2. Desactiva plugins para ver si el problema es un plugin específico.
  3. Aumenta max_connections si tienes permisos de administrador.
  4. Reduce los timeouts para limpiar conexiones muertas.
  5. Optimiza tu web con caché y eliminando plugins pesados.
  6. Bloquea bots con un firewall a nivel de DNS (Cloudflare).

Si sigues estos pasos, tu web volverá a estar operativa y, con un poco de mantenimiento, podrás evitar que el error se repita. Si el problema persiste incluso después de aumentar el límite a 500, es hora de revisar tus consultas SQL o contratar un servicio de optimización de bases de datos profesional.

[TIP FINAL]: Configura una alerta en tu servidor para que te avise por email cuando el número de conexiones activas supere el 80% del límite. Así podrás actuar antes de que el error aparezca. Herramientas como UptimeRobot o el propio panel de control de tu hosting pueden hacer esto por ti.

¿Necesitas ayuda?Son dos de nuestros técnicos, Agustín y Mikel, y están disponibles para resolver cualquier problema.

Hablar con ellos ahora
Agustín y Mikel