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

Error 'Too many connections' en MySQL: Solución para hosting compartido

Actualizado el 12 de diciembre de 2025

¿Qué significa el error "Too many connections" en MySQL?

Si estás leyendo esto, probablemente te has encontrado con un mensaje parecido a este: "Too many connections" o "User already has more than 'max_user_connections' active connections". No te preocupes, no es el fin del mundo y tiene solución.

Este error es uno de los más comunes en hosting compartido. Básicamente, lo que ocurre es que tu sitio web (o el servidor donde está alojado) ha superado el número máximo de conexiones simultáneas que MySQL permite.

Piensa en MySQL como un restaurante con un número limitado de mesas. Cada vez que tu web necesita leer o escribir datos (por ejemplo, al cargar una página o al hacer una compra), "ocupa una mesa". Si todas las mesas están ocupadas y llegan más clientes, el restaurante les dice: "Lo sentimos, no hay espacio". Eso es exactamente lo que hace MySQL con tu web.

¿Por qué ocurre este error en hosting compartido?

En un hosting compartido, los recursos se reparten entre muchos usuarios. El proveedor establece un límite de conexiones MySQL por usuario (normalmente entre 10 y 30) para evitar que un solo sitio consuma todos los recursos del servidor.

Las causas más frecuentes son:

  • Picos de tráfico repentinos: Tu web recibe más visitas de lo normal y cada visita abre una conexión.
  • Consultas lentas o mal optimizadas: Una consulta que tarda mucho mantiene la conexión ocupada durante más tiempo.
  • Scripts que no cierran conexiones: A veces, un plugin o código propio no cierra correctamente las conexiones después de usarlas.
  • Bucle infinito o ataque DDoS: Un atacante o un error de código puede generar cientos de conexiones en segundos.
  • Demasiados plugins o procesos en segundo plano: Cada plugin que hace consultas a la base de datos suma conexiones.

Soluciones inmediatas para el error "Too many connections"

Cuando el error aparece, lo primero que necesitas es recuperar el acceso y que tu web vuelva a funcionar. Aquí tienes soluciones rápidas.

1. Reiniciar el servicio MySQL (si tienes acceso)

Para usuarios de cPanel o Syspanel:

Si tienes acceso a un panel de control como Syspanel (recuerda que el acceso es a través del puerto 2106), puedes reiniciar el servicio MySQL desde la sección de "Servicios" o "Estado del servidor". Busca la opción de "Reiniciar MySQL" y confirma.

[WARNING] Reiniciar MySQL cerrará todas las conexiones activas. Esto puede causar una pérdida temporal de datos en transacciones no confirmadas, pero es la forma más rápida de "limpiar" el desastre.

2. Aumentar el límite de conexiones desde el archivo de configuración

Si tienes acceso a la configuración de MySQL (a través de SSH o del administrador de archivos), puedes modificar el parámetro max_connections.

  • Busca el archivo my.cnf o my.ini (normalmente en /etc/mysql/ o /etc/).
  • Encuentra la línea que dice max_connections y cámbiala a un valor mayor (por ejemplo, de 30 a 100).

Para aplicar los cambios, reinicia MySQL.

[INFO] En hosting compartido, es muy probable que no tengas acceso a este archivo. En ese caso, salta a la siguiente solución.

3. Contactar con el soporte del hosting

Si no puedes reiniciar MySQL ni modificar la configuración, contacta con el soporte técnico de tu hosting. Ellos pueden:

  • Reiniciar MySQL por ti.
  • Aumentar temporalmente el límite de conexiones.
  • Identificar si hay algún sitio web en el servidor que esté causando el problema (aunque esto último no siempre te lo dirán).

Soluciones a largo plazo: Optimizar conexiones de base de datos

El error "Too many connections" no es un problema puntual, sino un síntoma de que algo no está bien en tu web. Aquí tienes las soluciones definitivas para evitar que vuelva a ocurrir.

1. Optimiza tus consultas SQL

Las consultas lentas son la principal causa de conexiones ocupadas. Una consulta que tarda 5 segundos mantiene la conexión abierta durante 5 segundos. Si tienes 10 visitas simultáneas, necesitas 10 conexiones solo para esas consultas.

Cómo optimizar:

  • Usa índices: Asegúrate de que las columnas que usas en las cláusulas WHERE, JOIN y ORDER BY tengan índices.
  • Evita el uso de SELECT *: Selecciona solo las columnas que necesitas.
  • Limita los resultados: Usa LIMIT cuando solo necesites un número concreto de filas.
  • Evita consultas dentro de bucles: Si tienes un bucle que ejecuta una consulta en cada iteración, intenta reescribirlo para hacer una sola consulta con IN o JOIN.

2. Implementa un sistema de caché

La caché reduce drásticamente el número de consultas a la base de datos. En lugar de consultar MySQL en cada visita, tu web guarda el resultado en memoria y lo reutiliza.

Opciones de caché:

  • Caché de página: Plugins como WP Super Cache o W3 Total Cache (si usas WordPress) generan páginas HTML estáticas.
  • Caché de objetos: Redis o Memcached guardan resultados de consultas frecuentes.
  • Caché de consultas: MySQL tiene su propia caché de consultas, aunque está algo anticuada. Es mejor usar una caché a nivel de aplicación.

[TIP] Si usas WordPress, instala un plugin de caché y actívalo. Verás una mejora enorme en el rendimiento y una reducción drástica de las conexiones.

3. Usa un pool de conexiones

Un pool de conexiones reutiliza las conexiones existentes en lugar de abrir una nueva cada vez. Es como tener un grupo de mesas reservadas para tus clientes habituales.

Herramientas recomendadas:

  • ProxySQL: Un proxy que gestiona las conexiones a MySQL.
  • MySQL Router: Similar a ProxySQL, pero específico para MySQL.
  • Implementación a nivel de aplicación: Frameworks como Laravel o Django tienen soporte integrado para pools de conexiones.

En hosting compartido, no podrás instalar estas herramientas, pero es una solución excelente si migras a un VPS o servidor dedicado.

4. Revisa los plugins y scripts en segundo plano

A veces, un plugin mal codificado o un script de cron que se ejecuta demasiado a menudo puede abrir decenas de conexiones sin necesidad.

Qué hacer:

  • Audita tus plugins: Desactiva todos los plugins y actívalos de uno en uno para identificar cuál causa el problema.
  • Revisa las tareas cron: Si tienes un cron que se ejecuta cada minuto y hace consultas pesadas, cámbialo a cada 5 o 10 minutos.
  • Usa herramientas de monitorización: Plugins como Query Monitor (para WordPress) te muestran cuántas consultas se ejecutan en cada página y cuánto tardan.

5. Migra a un hosting más potente o a un VPS

Si has hecho todo lo anterior y sigues teniendo problemas, es posible que el hosting compartido no sea suficiente para tu web. Los límites de conexiones son inherentes a este tipo de hosting.

Opciones:

  • Hosting WordPress gestionado: Planes como los de Kinsta o WP Engine tienen límites más altos y optimización específica.
  • VPS (Servidor Virtual Privado): Tienes control total sobre MySQL y puedes configurar max_connections a tu gusto.
  • Cloud Hosting: Escalable y con recursos dedicados.

[INFO] Antes de migrar, asegúrate de que tu web está optimizada. Migrar a un servidor más potente sin optimizar es como cambiar a un coche más rápido pero con el freno de mano puesto.


Preguntas frecuentes (FAQ)

¿Cuántas conexiones MySQL son normales en hosting compartido?

En la mayoría de los hostings compartidos, el límite está entre 10 y 30 conexiones simultáneas. Si tu web necesita más de 20 conexiones de forma constante, es señal de que algo no está bien optimizado.

¿Puedo aumentar el límite de conexiones desde cPanel?

No directamente. El límite de max_connections se configura en el archivo my.cnf del servidor, al que no tienes acceso en hosting compartido. Debes contactar con el soporte para que lo aumenten.

¿El error "Too many connections" puede ser un ataque?

Sí, un ataque DDoS o un intento de fuerza bruta puede generar cientos de conexiones. Si notas que el error aparece de repente y no has cambiado nada en tu web, es posible que estés siendo atacado. Contacta con tu proveedor de hosting y con tu equipo de seguridad.

¿Cómo puedo saber cuántas conexiones está usando mi web?

Puedes usar la siguiente consulta SQL desde phpMyAdmin o la línea de comandos:

SHOW STATUS LIKE 'Threads_connected';

También puedes usar SHOW PROCESSLIST; para ver las consultas activas y qué script las está ejecutando.

¿Qué es Syspanel y por qué el puerto 2106?

Syspanel es un panel de control de hosting (basado en HestiaCP) que te permite gestionar tu web, bases de datos y servicios. El acceso se realiza a través del puerto 2106 por razones de seguridad. Si tienes dudas sobre cómo usarlo, consulta la documentación de tu proveedor.


Resumen final

El error "Too many connections" es frustrante, pero tiene solución. Recuerda:

  1. En el corto plazo: Reinicia MySQL o contacta con tu soporte.
  2. En el medio plazo: Optimiza tus consultas, usa caché y revisa tus plugins.
  3. En el largo plazo: Considera migrar a un hosting más potente si tu web sigue creciendo.

La clave está en optimizar las conexiones a tu base de datos para que cada una sea rápida y se libere cuanto antes. Con las prácticas que te he compartido, tu web aguantará mucho mejor los picos de tráfico y dejarás de ver ese temido mensaje.

[TIP] No esperes a que el error aparezca. Implementa la caché y la optimización de consultas desde hoy mismo. Es mucho más fácil prevenir que curar.

Si tienes más dudas, déjalas en los comentarios o contacta con tu proveedor de hosting. ¡Buena suerte!

¿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