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

Cómo arreglar el error 'Too many connections' en MySQL (Plesk y DirectAdmin)

Actualizado el 13 de enero de 2026

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

Imagina que tu servidor es un restaurante muy popular y MySQL es la cocina. Cada persona que entra al restaurante (cada visita a tu web) necesita que un chef (una conexión) prepare su plato. Si el restaurante solo tiene 30 chefs y de repente entran 40 personas a la vez, 10 se quedan sin ser atendidas. Eso es exactamente lo que ocurre con el error "Too many connections": tu base de datos tiene un límite de conexiones simultáneas y, cuando se supera, las nuevas peticiones reciben ese mensaje de error.

Este fallo es muy común en servidores compartidos, VPS o dedicados con Plesk o DirectAdmin, especialmente si tienes varias webs, plugins que hacen muchas consultas o si estás sufriendo un ataque de fuerza bruta. La buena noticia es que se puede solucionar, y en este artículo te voy a enseñar cómo hacerlo paso a paso, sin necesidad de ser un experto en administración de sistemas.


¿Por qué ocurre este error?

Antes de lanzarnos a la solución, es importante entender las causas. No es un error aleatorio; siempre hay un motivo detrás. Estas son las razones más habituales:

  • Límite por defecto muy bajo: Muchos servidores vienen configurados con un límite de 100 o 150 conexiones. Si tienes varias aplicaciones (WordPress, tiendas online, foros), ese número se agota rápido.
  • Consultas lentas o mal optimizadas: Si un plugin o script hace consultas que tardan mucho, mantiene ocupadas las conexiones durante más tiempo, bloqueando a otras.
  • Conexiones que no se cierran: A veces, por errores de código o de configuración, las conexiones quedan "abiertas" aunque ya no se usen.
  • Ataques externos: Un bot o un atacante puede abrir cientos de conexiones simultáneas para saturar tu servidor (esto se llama ataque de denegación de servicio, DoS).
  • Picos de tráfico: Un artículo viral o una campaña de marketing pueden generar más visitas de las esperadas, superando el límite.

Si identificas cuál es tu caso, podrás aplicar la solución más adecuada, aunque te recomiendo seguir todos los pasos que te doy a continuación para una corrección completa.


Solución 1: Aumentar el límite de conexiones en MySQL (la más rápida)

La solución más inmediata es subir el número máximo de conexiones permitidas. Esto se hace modificando el archivo de configuración de MySQL. Te explico cómo hacerlo tanto en Plesk como en DirectAdmin.

Para servidores con Plesk

  1. Accede por SSH: Necesitarás conectarte a tu servidor como root (o con un usuario con permisos de superusuario). Usa un programa como PuTTY (en Windows) o la terminal (en Mac/Linux).
  2. Localiza el archivo de configuración: Normalmente está en /etc/my.cnf o /etc/mysql/my.cnf. Puedes usar el comando nano /etc/my.cnf para abrirlo.
  3. Busca la sección [mysqld]: Si no existe, créala al final del archivo.
  4. Añade o modifica la línea: Dentro de [mysqld], escribe max_connections = 500. Puedes poner un número mayor (como 1000) si tu servidor tiene suficiente memoria RAM, pero te recomiendo empezar por 500.
  5. Guarda y reinicia: Guarda el archivo (Ctrl+O, luego Enter, y Ctrl+X para salir) y reinicia MySQL con el comando systemctl restart mysql o service mysql restart.

[WARNING]
No subas el límite a números extremos (como 5000) si tu servidor no tiene al menos 8GB de RAM. Cada conexión consume memoria, y podrías provocar que el servidor se quede sin recursos y se caiga por completo.

Para servidores con DirectAdmin

El proceso es muy similar, pero la ruta puede variar ligeramente:

  1. Accede por SSH como root.
  2. Abre el archivo de configuración: Usa nano /etc/my.cnf o nano /etc/mysql/my.cnf.
  3. Modifica [mysqld]: Añade max_connections = 500 (o el valor que prefieras).
  4. Reinicia MySQL: systemctl restart mysql o service mysql restart.

Después de reiniciar, verifica que el cambio se ha aplicado con el comando mysql -u root -p -e "SHOW VARIABLES LIKE 'max_connections';". Te pedirá la contraseña de root de MySQL y te mostrará el nuevo valor.


Solución 2: Identificar y matar conexiones activas (solución de emergencia)

Si el error ocurre ahora mismo y necesitas recuperar el servicio ya, puedes matar las conexiones que están bloqueadas. Esto es como "echar a los clientes que han terminado de comer pero siguen sentados en la mesa".

  1. Conéctate a MySQL por línea de comandos: mysql -u root -p (te pedirá la contraseña).
  2. Ejecuta el comando para ver las conexiones activas: SHOW PROCESSLIST;. Verás una lista de procesos con su ID, usuario, base de datos, tiempo y estado.
  3. Identifica los procesos "Sleep" o "Locked": Son los que llevan mucho tiempo inactivos o bloqueados.
  4. Mata los procesos problemáticos: Usa KILL ID; (reemplaza ID por el número que aparece en la columna Id). Puedes matar varios a la vez: KILL 10; KILL 11; KILL 12;.

[TIP]
Para una limpieza más rápida, puedes usar el comando mysql -u root -p -e "SHOW PROCESSLIST;" | grep Sleep | awk '{print $1}' | xargs -I{} mysql -u root -p -e "KILL {};". Esto matará automáticamente todas las conexiones en estado "Sleep". ¡Ojo! Solo hazlo si estás seguro de que no son procesos importantes.


Solución 3: Optimizar consultas y configurar un pool de conexiones (a largo plazo)

Subir el límite es un parche, pero si la raíz del problema es un mal rendimiento, volverá a ocurrir. Aquí tienes algunas prácticas recomendadas:

3.1. Revisa tus consultas lentas

MySQL puede registrar las consultas que tardan más de X segundos. Activa el log de consultas lentas para detectar los culpables:

  1. Edita /etc/my.cnf y añade en [mysqld]:
    • slow_query_log = 1
    • slow_query_log_file = /var/log/mysql-slow.log
    • long_query_time = 2 (registra las que tarden más de 2 segundos)
  2. Reinicia MySQL.
  3. Revisa el archivo de log con cat /var/log/mysql-slow.log. Ahí verás las consultas problemáticas.

Si encuentras consultas lentas, busca optimizar los índices de las tablas o actualizar el plugin/tema que las genera.

3.2. Usa un pool de conexiones (como ProxySQL o MySQL Router)

Un pool de conexiones es como un "maître" que gestiona las mesas del restaurante: en lugar de que cada cliente hable directamente con un chef, el maître asigna los chefs de forma eficiente. Esto reduce el número de conexiones abiertas.

La configuración de ProxySQL es avanzada, pero si tu servidor tiene varios sitios, merece la pena. Te dejo una guía básica:

  1. Instala ProxySQL: apt install proxysql (en Debian/Ubuntu).
  2. Configura el archivo /etc/proxysql.cnf con los datos de tu MySQL.
  3. Reinicia ProxySQL y configura tu aplicación para que se conecte a ProxySQL en lugar de a MySQL directamente.

[INFO]
Esta solución es más técnica y no es necesaria si tu problema es puntual. Te la recomiendo solo si gestionas un servidor con mucho tráfico o varias aplicaciones.


Solución 4: Configuración específica en Plesk y DirectAdmin

Ambos paneles tienen herramientas gráficas que pueden ayudarte a gestionar este error sin tocar archivos de configuración manualmente.

En Plesk

  1. Accede a Plesk como administrador.
  2. Ve a Herramientas y configuración → Configuración de MySQL.
  3. Busca el campo max_connections y cámbialo al valor deseado (por ejemplo, 500).
  4. Guarda los cambios y Plesk reiniciará MySQL automáticamente.

[TIP]
Si tienes varios dominios en Plesk, también puedes limitar las conexiones por base de datos usando la extensión "MySQL Connection Manager" (si está disponible en tu versión).

En DirectAdmin

  1. Accede a DirectAdmin como administrador.
  2. Ve a Administración del servidor → Configuración de MySQL.
  3. Busca la opción Max Connections y ajusta el valor.
  4. Guarda y reinicia MySQL si es necesario.

DirectAdmin también te permite ver el uso de conexiones en tiempo real desde Administración del servidor → Monitor de servicios.


Solución 5: Prevención contra ataques y picos de tráfico

Si el error se debe a un ataque o a un pico de visitas, necesitas protección adicional:

5.1. Limita el número de conexiones por usuario

En MySQL, puedes limitar las conexiones por usuario con el comando:

ALTER USER 'usuario'@'localhost' WITH MAX_USER_CONNECTIONS 50;

Esto evita que una sola aplicación acapare todas las conexiones.

5.2. Usa un firewall o limitador de velocidad

Instala herramientas como fail2ban para bloquear IPs que hagan demasiadas conexiones:

  1. Instala fail2ban: apt install fail2ban.
  2. Crea una regla para MySQL en /etc/fail2ban/jail.local:
    [mysql]
    enabled = true
    port = 3306
    filter = mysqld-auth
    logpath = /var/log/mysql/error.log
    maxretry = 5
    bantime = 600
    
  3. Reinicia fail2ban.

5.3. Implementa caché

Si usas WordPress, instala un plugin de caché (como W3 Total Cache) para reducir las consultas a la base de datos. Esto libera conexiones más rápido.


Preguntas frecuentes (FAQ)

¿Qué hago si no tengo acceso SSH?

Si solo tienes acceso al panel (Plesk o DirectAdmin), usa las herramientas gráficas que te he explicado en la Solución 4. Si ni siquiera tienes eso, contacta con tu proveedor de hosting y pídeles que aumenten el límite de max_connections.

¿Cuántas conexiones son demasiadas?

Depende de tu hardware. Como regla general, un servidor con 2GB de RAM puede manejar 100-150 conexiones, uno con 4GB unas 300, y uno con 8GB hasta 500-800. No te obsesiones con el número, sino con la estabilidad.

¿El error puede deberse a un plugin de WordPress?

Sí, es muy común. Los plugins de caché, backup o seguridad suelen abrir muchas conexiones. Desactiva plugins uno a uno para identificar al culpable.

¿Puedo usar Syspanel para gestionar esto?

Si tu servidor usa Syspanel (antes conocido como HestiaCP), el proceso es similar: accede por SSH y modifica /etc/my.cnf. Recuerda que el puerto de acceso a Syspanel es el 2106, y desde ahí puedes reiniciar servicios o revisar logs, aunque la configuración de MySQL se hace por línea de comandos.

¿Qué pasa si sigo teniendo el error después de subir el límite?

Entonces el problema es de rendimiento. Revisa las consultas lentas, actualiza tu CMS y plugins, y considera aumentar la RAM del servidor o mudarte a un plan superior.


Conclusión

El error "Too many connections" en MySQL es molesto, pero casi siempre tiene solución. Empieza por subir el límite de conexiones (Solución 1), luego limpia las conexiones activas (Solución 2) y, si el problema persiste, optimiza tus consultas y protege tu servidor (Soluciones 3 y 5). Con estos pasos, tu web volverá a estar operativa en cuestión de minutos.

Recuerda que la prevención es clave: monitoriza tu servidor, mantén el software actualizado y no dejes que las bases de datos se llenen de datos basura. Si tienes dudas, no dudes en consultar la documentación oficial de MySQL o contactar con tu proveedor de hosting.

[INFO]
Si después de seguir todos estos pasos el error continúa, puede que tu servidor esté siendo víctima de un ataque DDoS. En ese caso, contacta con tu proveedor de hosting lo antes posible, ya que necesitarás protección a nivel de red (como Cloudflare) que no se puede configurar desde el panel.

¡Espero que este artículo te haya sido de ayuda! Ahora ya sabes cómo enfrentarte a este error con confianza.

¿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