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

Cómo solucionar el error 'Too many connections' en MySQL (hosting compartido)

Actualizado el 21 de febrero de 2026

¿Te ha pasado que tu web se queda congelada de repente y al mirar el panel de control de tu hosting aparece el temido mensaje "Too many connections"? No te preocupes, no es el fin del mundo. Es uno de los errores más comunes en MySQL cuando trabajamos con planes de hosting compartido, donde los recursos se reparten entre varios usuarios.

En esta guía completa, vamos a desgranar qué significa exactamente este error, por qué ocurre y, lo más importante, cómo solucionarlo paso a paso sin necesidad de ser un experto en bases de datos. Al final, serás capaz de diagnosticar el problema y aplicar la solución más adecuada para tu caso.

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

Imagina que tu base de datos es un pequeño restaurante con un número limitado de mesas. Cada vez que tu web necesita hacer una consulta (como cargar un artículo, iniciar sesión o añadir un producto al carrito), ocupa una de esas mesas, es decir, una conexión. Si el restaurante se llena y llegan más clientes, el maître debe decirles que no hay sitio. Eso es exactamente lo que hace MySQL cuando lanza el error too many connections mysql.

En términos técnicos, MySQL tiene un parámetro llamado max_connections que limita el número de conexiones simultáneas. En un hosting compartido, este límite suele ser bastante bajo (por ejemplo, entre 10 y 30 conexiones) para asegurar que un solo usuario no consuma todos los recursos del servidor. Cuando se supera ese tope, cualquier nueva solicitud recibe el error.

[INFO] Este error no significa que tu web esté caída permanentemente. Normalmente, es intermitente: aparece cuando hay un pico de tráfico o cuando una aplicación se queda con conexiones "colgadas" sin cerrar.

Causas más comunes del error de conexiones

Antes de lanzarse a cambiar configuraciones, es fundamental entender por qué se está alcanzando el límite. Las razones más habituales son:

  • Conexiones no cerradas correctamente: Tu código (PHP, por ejemplo) abre una conexión a la base de datos pero no la cierra después de usarla. Esto va llenando el "tanque" de conexiones hasta que se desborda.
  • Picos de tráfico inesperados: Si tu web recibe una oleada de visitas (por ejemplo, por una campaña de marketing o un artículo viral), el número de consultas simultáneas puede dispararse.
  • Plugins o scripts mal optimizados: En WordPress, un plugin con consultas muy pesadas o ineficientes puede mantener conexiones abiertas durante mucho tiempo.
  • Procesos zombies: A veces, el servidor deja procesos de MySQL que no terminan de cerrarse, ocupando conexiones indefinidamente.
  • Ataques o bots: El tráfico malicioso puede intentar abrir muchas conexiones a la vez para saturar el sistema.

Cómo solucionar el error: Guía paso a paso

Aquí tienes una batería de soluciones, de las más simples a las más técnicas. Te recomiendo probarlas en orden.

1. Reiniciar tu aplicación o servicios web (la solución rápida)

A veces, la solución más sencilla es la mejor. Si el error es puntual, puedes intentar lo siguiente:

  • Reinicia tu aplicación: Si usas WordPress, ve al panel de administración (si puedes acceder) y desactiva todos los plugins. Luego, actívalos uno a uno para ver cuál causa el problema.
  • Reinicia el servicio de PHP: En muchos paneles de control, como Syspanel (accesible a través del puerto 2106), puedes reiniciar el servicio de PHP-FPM desde la sección de "Servicios" o "Herramientas". Esto cierra todas las conexiones que tu web tenía abiertas en ese momento.

[TIP] Si tienes acceso a Syspanel, busca la pestaña "Web" o "Servicios" y haz clic en el botón de reinicio de PHP. Es como apagar y encender el ordenador: soluciona el 90% de los problemas temporales.

2. Optimizar tu código y consultas (la solución a largo plazo)

Si el error se repite, es hora de mirar tu código. El objetivo es que las conexiones se abran, se usen y se cierren lo más rápido posible.

  • Cierra las conexiones: Si tienes un script PHP propio, asegúrate de usar mysqli_close($conexion) o $conexion->close() al final de cada bloque de código. Si usas un framework, normalmente lo hace automáticamente, pero vale la pena revisar la configuración de persistencia.
  • Usa consultas optimizadas: Evita consultas que devuelvan miles de filas si solo necesitas unas pocas. Usa LIMIT en tus SELECT.
  • Configura el "timeout" de conexión: Puedes reducir el tiempo que una conexión puede estar inactiva antes de ser cerrada. En tu archivo de configuración de PHP (php.ini o .htaccess), puedes ajustar mysqli.connect_timeout a un valor bajo, como 5 o 10 segundos.
// Ejemplo en PHP para cerrar una conexión correctamente
$conexion = mysqli_connect("localhost", "usuario", "password", "basededatos");
// ... tu código ...
mysqli_close($conexion);

3. Aumentar el límite de conexiones (la solución de emergencia)

En un hosting compartido, normalmente no puedes modificar el parámetro max_connections del servidor principal, ya que es una configuración global. Sin embargo, hay alternativas:

  • Configuración en tu plan: Algunos proveedores permiten aumentar el límite de conexiones pagando más o activando un plan superior. Contacta con tu soporte técnico y pregunta si es posible.
  • Usar un pool de conexiones: Esta es una solución más avanzada, pero efectiva. Un pool de conexiones es un intermediario que reutiliza un conjunto fijo de conexiones a MySQL. Si usas una aplicación compleja, herramientas como ProxySQL o HikariCP (para Java) pueden ayudarte, aunque la configuración puede ser complicada para un usuario novato.

[WARNING] No intentes editar el archivo my.cnf o my.ini en un hosting compartido. No tendrás permisos y podrías romper la configuración del servidor. Si lo necesitas, habla con tu proveedor.

4. Gestionar procesos zombies y consultas lentas

A veces, el problema no es que lleguen muchas peticiones, sino que las que llegan se quedan atascadas. Para ello, puedes:

  • Identificar consultas lentas: En Syspanel (puerto 2106), busca la sección de "Bases de Datos" o "Logs". Ahí podrás ver las consultas que están tardando mucho. Si encuentras una que siempre aparece, es la culpable.
  • Matar procesos desde phpMyAdmin: Si tienes acceso a phpMyAdmin, ve a la pestaña "Procesos". Verás una lista de conexiones activas. Si alguna lleva mucho tiempo en estado "Sleep" o "Query", puedes seleccionarla y hacer clic en "Terminar" (Kill). Esto liberará una conexión al instante.

[TIP] Usa phpMyAdmin con cuidado. Terminar un proceso que está realizando una tarea importante puede causar errores. Asegúrate de que solo matas procesos que estén claramente inactivos o atascados.

5. Reducir el número de conexiones por usuario

En MySQL, puedes limitar el número de conexiones que un usuario específico puede abrir. Aunque no siempre se aplica en hosting compartido, es una buena práctica. Si tienes acceso a la línea de comandos (lo cual es raro en compartido), podrías usar:

ALTER USER 'tu_usuario'@'localhost' WITH MAX_USER_CONNECTIONS 5;

Pero repito, en la mayoría de los casos, esta opción no estará disponible.

6. Usar un "caché" para reducir las consultas

Esta es una de las mejores soluciones preventivas. Si tu web hace muchas consultas a la base de datos, un sistema de caché puede reducir drásticamente el número de conexiones.

  • Caché de objetos: En WordPress, instala un plugin como W3 Total Cache o WP Super Cache. Estos generan páginas HTML estáticas y reducen las consultas a la base de datos.
  • Redis o Memcached: Si tu proveedor lo ofrece, puedes usar estos sistemas para almacenar en memoria los resultados de las consultas más frecuentes. En Syspanel, a veces hay una opción para activar Redis fácilmente.

7. Cambiar a un plan de hosting más potente

Si has probado todo lo anterior y el error persiste, puede que tu plan de hosting compartido simplemente no sea suficiente para el tráfico que recibe tu web. Si tu proyecto crece, es una señal de que necesitas dar el salto a un VPS o un servidor dedicado, donde tendrás control total sobre max_connections y otros parámetros.

[WARNING] Antes de cambiar de plan, analiza tu tráfico. Si solo recibes 100 visitas al día y tienes este error, el problema es de código, no de recursos. No pagues más sin antes optimizar.

Preguntas Frecuentes (FAQ)

¿Cuántas conexiones MySQL necesito para una web normal?
Para una web pequeña o mediana, entre 10 y 20 conexiones simultáneas suelen ser suficientes. Si necesitas más, es que algo está mal optimizado o tienes un pico de tráfico muy alto.

¿Puedo ver el número de conexiones activas en ese momento?
Sí. En phpMyAdmin, ve a la pestaña "Estado" (Status) y busca la variable Threads_connected. También puedes verlo en la sección "Procesos".

¿Qué significa el error "User already has more than 'max_user_connections' active connections"?
Este error es similar, pero se refiere al límite por usuario. Significa que un solo usuario (por ejemplo, tu usuario de base de datos) ha alcanzado su límite individual. Es una capa adicional de protección.

¿Reiniciar MySQL soluciona el error?
En un hosting compartido, no puedes reiniciar MySQL, ya que es un servicio global. Si lo hicieras, afectarías a todos los usuarios del servidor. Solo tu proveedor puede hacerlo.

¿El error "too many connections mysql" puede dañar mi base de datos?
No. Es un error de disponibilidad temporal. Tus datos están seguros. Simplemente no se pueden atender nuevas peticiones hasta que se liberen conexiones.

Conclusión y consejo final

El error "Too many connections" es un aviso de que tu web está pidiendo más recursos de los que el servidor puede darle en ese momento. La solución no es única, sino que depende de la causa raíz.

Mi consejo es que empieces por lo más simple: reiniciar PHP desde Syspanel (puerto 2106) y revisar si tienes plugins o scripts que estén haciendo consultas ineficientes. Instalar un buen sistema de caché es siempre una victoria. Si el problema persiste, contacta con tu proveedor de hosting, pero llega a la conversación con los datos de la sección "Procesos" de phpMyAdmin para que puedan ayudarte mejor.

Recuerda que este error es común, pero no es algo con lo que debas convivir. Con un poco de mantenimiento y las soluciones que te he dado, podrás mantener tu web funcionando sin sobresaltos. ¡Manos a la obra!

¿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