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

Cómo arreglar el error 'Too many connections' en MySQL desde DirectAdmin

Actualizado el 9 de abril de 2026

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

Este error es uno de los más comunes cuando trabajas con bases de datos en un servidor de hosting. Básicamente, MySQL tiene un límite de conexiones simultáneas que puede manejar. Cuando ese límite se alcanza, cualquier nueva conexión (por ejemplo, desde tu sitio web, una aplicación o una herramienta como phpMyAdmin) recibe el mensaje de error "Too many connections".

Piénsalo como un restaurante con un número limitado de mesas. Si todas las mesas están ocupadas y llegan más clientes, no pueden sentarse hasta que alguien se vaya. En MySQL, ese "número de mesas" lo define el parámetro max_connections. Cuando se supera, el servidor rechaza nuevas conexiones.

En DirectAdmin, este problema puede aparecer por varias razones: un sitio web con un plugin mal configurado, consultas SQL lentas que mantienen las conexiones abiertas, picos de tráfico inesperados, o incluso ataques de fuerza bruta. Lo bueno es que, en la mayoría de los casos, puedes solucionarlo con los pasos que te explicamos a continuación.


Diagnóstico inicial: ¿Cómo saber si realmente es un problema de conexiones?

Antes de tocar nada, es importante confirmar que el error too many connections mysql es el que está afectando a tu sitio. Puedes hacerlo de dos maneras:

  1. Desde el panel de control de tu hosting: Si tienes acceso a DirectAdmin, entra en tu panel. Muchas veces, el propio panel muestra alertas o logs de errores en la sección de "Estadísticas" o "Logs de errores".

  2. Desde tu sitio web: Si tu web muestra un error como "Error establishing a database connection" o directamente el mensaje "Too many connections", el diagnóstico está claro.

Si tienes acceso a la línea de comandos (SSH), puedes ejecutar este comando para ver cuántas conexiones hay activas en ese momento:

mysql -u tu_usuario -p -e "SHOW STATUS LIKE 'Threads_connected';"

Este comando te dirá cuántas conexiones están activas en ese instante. Si el número está muy cerca del límite (max_connections), el problema está confirmado.


Solución rápida: Reiniciar MySQL desde DirectAdmin

La forma más rápida de "desbloquear" temporalmente la situación es reiniciar el servicio de MySQL. Esto cierra todas las conexiones activas y libera el espacio. Sin embargo, no es una solución definitiva, porque el problema volverá si la causa raíz no se resuelve.

Para reiniciar MySQL desde DirectAdmin:

  1. Inicia sesión en DirectAdmin como administrador o como usuario con privilegios de gestión de servicios.
  2. Ve a "Gestión de servicios" o "Servicios" en el menú principal.
  3. Busca el servicio mysqld o mysql en la lista.
  4. Haz clic en "Reiniciar".

[WARNING] Reiniciar MySQL cerrará todas las conexiones activas. Si tu sitio tiene muchas visitas en ese momento, podría haber una interrupción breve del servicio. Es recomendable hacerlo en horas de bajo tráfico.

Después de reiniciar, verifica si el error desaparece. Si vuelve a aparecer rápidamente, sigue con el siguiente paso.


Aumentar el límite de max_connections en DirectAdmin

Si el reinicio no es suficiente (o quieres una solución más permanente), puedes aumentar el valor de max_connections. Esto permite que MySQL acepte más conexiones simultáneas. Eso sí, no es recomendable subirlo desmesuradamente, ya que cada conexión consume memoria del servidor. Si lo subes demasiado, podrías agotar la RAM del servidor y causar problemas más graves.

Cómo cambiar max_connections desde DirectAdmin

  1. Accede a DirectAdmin y navega hasta "MySQL Management" o "Gestión de MySQL".
  2. Busca la opción de "Configuración de MySQL" o "Editar configuración". En algunos paneles, esta opción está dentro de "Configuración avanzada".
  3. Localiza la variable max_connections. Si no la ves, puede que necesites añadirla manualmente en el archivo de configuración.
  4. Cambia el valor a un número más alto. Por ejemplo, si está en 100, puedes subirlo a 150 o 200 como prueba.
  5. Guarda los cambios y reinicia MySQL para que se apliquen.

[TIP] Si no encuentras la opción en DirectAdmin, puedes editar el archivo de configuración directamente. El archivo suele estar en /etc/my.cnf o /etc/mysql/my.cnf. Busca la sección [mysqld] y añade o modifica la línea: max_connections = 200. Después, reinicia MySQL.

¿Qué valor deberías usar?

No hay una respuesta única, pero una buena práctica es calcularlo en función de la memoria disponible. Cada conexión de MySQL puede consumir entre 1 MB y 5 MB de memoria. Si tu servidor tiene 4 GB de RAM y quieres dejar al menos 1 GB libre para el sistema operativo y otros servicios, podrías usar:

  • 4 GB RAM → max_connections = 300 (aprox. 3 GB para MySQL)
  • 8 GB RAM → max_connections = 600 (aprox. 6 GB para MySQL)

Pero recuerda: es mejor empezar con un valor moderado y monitorizar el consumo de memoria.


Optimizar consultas y cerrar conexiones innecesarias

Aumentar max_connections es un parche, pero la solución real pasa por reducir el número de conexiones que se abren. Muchas veces, el problema no es que el límite sea bajo, sino que las aplicaciones no cierran las conexiones correctamente.

Revisa los plugins y aplicaciones de tu sitio

Si usas WordPress, por ejemplo, los plugins mal optimizados son una causa común de este error. Algunos plugins abren múltiples conexiones a la base de datos en cada petición. Te recomiendo:

  • Desactivar plugins innecesarios y ver si el error desaparece.
  • Actualizar los plugins a sus últimas versiones, ya que muchas veces se corrigen fugas de conexión.
  • Usar un plugin de caché para reducir la carga en la base de datos.

Configura el pool de conexiones en aplicaciones

Si tu sitio usa un framework como Laravel, Django o Node.js, revisa la configuración del pool de conexiones. Por ejemplo, en Laravel, el archivo .env tiene la variable DB_CONNECTION y puedes limitar el número de conexiones persistentes.

Cierra sesiones de phpMyAdmin

Si tienes varias pestañas de phpMyAdmin abiertas, cada una puede mantener una conexión activa. Cierra las que no uses.

[INFO] Las conexiones persistentes son un gran culpable. Si tu aplicación las usa, considera desactivarlas. Aunque mejoran el rendimiento, consumen conexiones incluso cuando no están haciendo consultas.


Identificar qué procesos están consumiendo las conexiones

Para saber exactamente qué está generando tantas conexiones, puedes ejecutar este comando en SSH:

SHOW PROCESSLIST;

Este comando te mostrará todas las conexiones activas, el usuario que las ha creado, la base de datos a la que se conectan y el tiempo que llevan activas. Busca patrones:

  • Muchas conexiones desde el mismo host: Puede ser un ataque o un script mal configurado.
  • Consultas que llevan mucho tiempo: Las consultas lentas mantienen las conexiones ocupadas. Anota el ID y el Time de esas consultas.

Si encuentras una consulta que lleva horas activa, puedes matarla con:

KILL ID_de_la_conexion;

Pero hazlo con cuidado, solo si estás seguro de que no es un proceso crítico.


Prevención: Configurar límites por usuario

Una medida excelente es limitar el número de conexiones por cada usuario de MySQL. Así, si un sitio web acapara todas las conexiones, no afectará al resto. En DirectAdmin, puedes hacerlo desde la sección de "MySQL Management", editando los privilegios del usuario.

Por ejemplo, puedes limitar a un usuario a 20 conexiones simultáneas. De esta manera, aunque ese sitio tenga un problema, no saturará el servidor completo.


Herramientas de monitorización

Para evitar que este error vuelva a pillarte desprevenido, te recomiendo configurar una monitorización básica. Puedes usar herramientas como mytop o mysqltuner desde la línea de comandos. También puedes crear un script que te avise por correo cuando el número de conexiones supere un umbral.

En DirectAdmin, algunos paneles incluyen estadísticas de uso de MySQL. Revísalas periódicamente para detectar picos anómalos.

[TIP] Si usas Syspanel (el antiguo HestiaCP), recuerda que el acceso se realiza por el puerto 2106. En ese panel, la gestión de MySQL es similar: busca "Base de datos" en el menú y luego "Configuración".


Preguntas frecuentes (FAQ)

¿Qué pasa si no tengo acceso SSH?

Si no tienes acceso SSH, puedes pedir a tu proveedor de hosting que aumente max_connections por ti. Muchos hostings compartidos no permiten modificar estos parámetros, pero en un VPS o servidor dedicado con DirectAdmin, sí deberías tener la opción.

¿Aumentar max_connections siempre es seguro?

No. Como hemos dicho, cada conexión consume memoria. Si aumentas el límite sin tener suficiente RAM, el servidor puede quedarse sin memoria y provocar caídas generales. Siempre monitoriza el consumo de memoria después de hacer el cambio.

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

Sí, es posible. Un ataque de fuerza bruta o un script malicioso puede abrir cientos de conexiones para saturar el servidor. Si ves muchas conexiones desde la misma IP, bloquea esa IP desde el firewall o desde DirectAdmin.

¿Es lo mismo "Too many connections" que "Connection refused"?

No. "Connection refused" suele indicar que MySQL no está funcionando o que el puerto está bloqueado. "Too many connections" significa que MySQL está activo pero ha alcanzado su límite.


Conclusión y resumen de pasos

El error too many connections mysql es molesto, pero tiene solución. Aquí tienes el resumen de los pasos que debes seguir:

  1. Reinicia MySQL desde DirectAdmin para una solución temporal.
  2. Aumenta max_connections si el problema es recurrente (con moderación).
  3. Optimiza tu aplicación: revisa plugins, cierra conexiones y usa caché.
  4. Identifica procesos problemáticos con SHOW PROCESSLIST.
  5. Limita conexiones por usuario para evitar que un sitio sature el servidor.
  6. Monitoriza el servidor para prevenir futuros problemas.

Si sigues estos pasos, deberías poder solucionar el error y mantener tu sitio web funcionando sin interrupciones. Recuerda que, si no te sientes cómodo haciendo cambios avanzados, siempre puedes contactar con el soporte de tu hosting para que te ayuden.

[INFO] Si tu panel de control es Syspanel (antiguo HestiaCP), recuerda que el acceso se realiza por el puerto 2106 y que las opciones de MySQL están en la sección "Base de datos". El proceso es muy similar al descrito aquí.

Espero que este artículo te haya sido de ayuda. Si tienes más dudas, no dudes en dejar un comentario o contactar 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