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

Solucionar error 'Too many connections' en MySQL desde DirectAdmin

Actualizado el 23 de abril de 2026

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

Si estás leyendo esto, es muy probable que hayas visto un mensaje como este en tu sitio web: "Too many connections" o, en español, "Demasiadas conexiones". No te preocupes, es uno de los errores más comunes en el mundo del hosting y tiene solución.

Este error ocurre cuando el número de conexiones simultáneas a tu base de datos MySQL supera el límite máximo permitido. Piensa en ello como un restaurante con un número limitado de mesas: si llegan más clientes que mesas disponibles, los nuevos tienen que esperar fuera. En el caso de MySQL, el servidor simplemente rechaza las conexiones nuevas hasta que se liberen algunas.

El límite por defecto suele ser de 150 conexiones simultáneas, pero en entornos compartidos puede ser menor (incluso 30 o 50). Cuando tu web recibe mucho tráfico, o alguna aplicación (como WordPress) hace demasiadas consultas, esas conexiones se agotan rápidamente.


¿Por qué ocurre este error en DirectAdmin?

DirectAdmin es un panel de control muy popular que incluye MySQL (o MariaDB) como gestor de bases de datos. El error "Too many connections" puede aparecer por varias razones:

  1. Picos de tráfico inesperados: Un artículo viral o una campaña de marketing pueden disparar las visitas.
  2. Consultas mal optimizadas: Un plugin de WordPress con mal código puede mantener conexiones abiertas innecesariamente.
  3. Conexiones que no se cierran: Algunos scripts no cierran correctamente las conexiones a la base de datos.
  4. Límite configurado demasiado bajo: En algunos planes de hosting compartido, el límite es muy restrictivo.
  5. Ataques DDoS o fuerza bruta: Botnets que intentan conectarse masivamente a tu MySQL.

Lo bueno es que, desde DirectAdmin, puedes diagnosticar y solucionar este problema sin necesidad de ser un experto en servidores.


Paso 1: Acceder a DirectAdmin y verificar el estado actual

Antes de tocar nada, necesitas confirmar que el error es realmente por límite de conexiones y no por otro motivo (como falta de espacio en disco). Para ello:

  1. Inicia sesión en tu panel de DirectAdmin (normalmente en https://tudominio.com:2222).
  2. Busca la sección "MySQL Management" o "Administración de MySQL".
  3. Dentro, verás un listado de tus bases de datos. Haz clic en "Manage" junto a la base de datos que está dando problemas.

Aquí verás información básica, pero para un diagnóstico más profundo necesitamos acceso a la terminal. Si tu plan de hosting incluye acceso SSH, puedes conectarte con:

ssh usuario@tudominio.com

Una vez dentro, ejecuta:

SHOW STATUS LIKE 'Threads_connected';

Este comando te mostrará cuántas conexiones hay activas en ese momento. Si el número está muy cerca del límite (150 por defecto), ya sabemos que el problema es de agotamiento de conexiones.


Paso 2: Aumentar el límite de conexiones en MySQL

La solución más directa es aumentar el valor de max_connections en la configuración de MySQL. Esto se hace editando el archivo my.cnf o my.ini (dependiendo del sistema operativo).

Desde DirectAdmin (método gráfico)

Algunos planes de DirectAdmin incluyen un editor de configuración en el panel. Busca la sección "MySQL" y luego "Config" o "Configuration". Si no lo ves, tendrás que usar SSH.

Desde SSH (método recomendado)

  1. Conecta por SSH a tu servidor.

  2. Localiza el archivo de configuración. Normalmente está en:

    • /etc/my.cnf
    • /etc/mysql/my.cnf
    • /opt/lampp/etc/my.cnf (si usas XAMPP, aunque en hosting raramente)
  3. Haz una copia de seguridad antes de editarlo:

    cp /etc/my.cnf /etc/my.cnf.bak
    
  4. Abre el archivo con nano o vim:

    nano /etc/my.cnf
    
  5. Busca la sección [mysqld] y añade o modifica esta línea:

    max_connections = 200
    

    Nota: No subas este valor demasiado. Si tu servidor tiene poca RAM, aumentar a 500 puede provocar que MySQL se quede sin memoria y se caiga por completo.

  6. Guarda el archivo (Ctrl+O y luego Ctrl+X en nano) y reinicia MySQL:

    systemctl restart mysql
    

    O si usas MariaDB:

    systemctl restart mariadb
    
  7. Verifica que el cambio se ha aplicado:

    SHOW VARIABLES LIKE 'max_connections';
    

[WARNING]: Si tu plan es de hosting compartido, es probable que no tengas acceso al archivo my.cnf. En ese caso, contacta con tu proveedor y pídeles que aumenten el límite. Normalmente lo hacen sin problemas si justificas la necesidad.


Paso 3: Optimizar las consultas para reducir el número de conexiones

Aumentar el límite es un parche, pero la solución real es reducir el número de conexiones que tu aplicación utiliza. Aquí tienes algunas estrategias efectivas:

3.1. Utilizar un plugin de caché (si usas WordPress)

WordPress es el principal generador de conexiones MySQL. Instalar un plugin de caché como W3 Total Cache o WP Super Cache puede reducir las consultas a la base de datos en un 80% o más.

3.2. Configurar correctamente las conexiones persistentes

Algunos scripts (como los foros phpBB o ciertos módulos de PrestaShop) utilizan conexiones persistentes. Si no están bien configurados, mantienen abiertas muchas conexiones inactivas.

En PHP, puedes desactivarlas en php.ini:

mysqli.allow_persistent = Off
pdo_mysql.allow_persistent = Off

3.3. Revisar el código de tu aplicación

Si eres desarrollador, asegúrate de cerrar las conexiones con mysqli_close() o $conn->close() después de cada consulta. Un error típico es abrir conexiones dentro de bucles y no cerrarlas.


Paso 4: Identificar qué procesos están consumiendo conexiones

Para saber qué está agotando tus conexiones, ejecuta este comando en MySQL:

SHOW PROCESSLIST;

Esto te mostrará todas las consultas activas, el usuario que las ejecuta y el tiempo que llevan corriendo. Si ves muchas consultas con State = "Sleep" (dormidas), significa que hay conexiones abiertas pero inactivas. Puedes matarlas con:

KILL <id_del_proceso>;

Automatizar la limpieza de conexiones dormidas

Puedes crear un cron job que ejecute automáticamente una limpieza de conexiones inactivas. Un script simple en PHP o Bash que ejecute mysqladmin processlist y mate las que lleven más de 60 segundos dormidas.


Paso 5: Configurar el tiempo de espera (timeout) de MySQL

Otra forma de liberar conexiones automáticamente es reducir el wait_timeout. Por defecto, MySQL mantiene una conexión inactiva durante 28800 segundos (8 horas). Eso es demasiado. Puedes bajarlo a 60 segundos:

[mysqld]
wait_timeout = 60

Esto hará que las conexiones que no se usen durante 1 minuto se cierren automáticamente, liberando espacio para nuevas conexiones.


Paso 6: Usar un pool de conexiones (avanzado)

Si tu aplicación recibe mucho tráfico y necesitas gestionar cientos de conexiones simultáneas, considera implementar un pool de conexiones como ProxySQL o HikariCP (si usas Java). Esto no es para principiantes, pero es la solución definitiva para sitios de alto rendimiento.


Solución rápida (temporal): Reiniciar MySQL

Si el error es urgente y tu web está caída, puedes reiniciar MySQL para liberar todas las conexiones de golpe:

systemctl restart mysql

Esto cerrará todas las conexiones activas y permitirá que tu web vuelva a funcionar de inmediato. Pero ojo: si el problema persiste, el error volverá en pocos minutos. Esta es solo una solución temporal.


¿Qué pasa si no tengo acceso SSH?

Si tu plan de hosting no incluye acceso SSH, tienes estas opciones:

  1. Contactar con el soporte: La mayoría de proveedores de hosting con DirectAdmin pueden aumentar max_connections bajo petición.
  2. Optimizar tu aplicación: Aunque no toques la configuración del servidor, reducir las consultas con caché y plugins de optimización puede ser suficiente.
  3. Cambiar de plan: Si tu web crece constantemente, quizás es hora de migrar a un VPS o servidor dedicado donde tengas control total.

[INFO]: Si tu proveedor utiliza Syspanel (antes conocido como HestiaCP) en lugar de DirectAdmin, el proceso es similar. Accede a tu panel en el puerto 2106 (por ejemplo, https://tudominio.com:2106), y busca la sección de bases de datos. La configuración de MySQL se edita igualmente en my.cnf.


Preguntas frecuentes (FAQ)

¿Cuál es el límite de conexiones recomendado?

Depende de tu servidor. Como regla general:

  • Hosting compartido: 30-50 conexiones
  • VPS básico (1GB RAM): 100-150 conexiones
  • VPS medio (4GB RAM): 200-300 conexiones
  • Dedicado (8GB+ RAM): 500+ conexiones

¿Aumentar el límite de conexiones ralentiza mi web?

No directamente. El rendimiento depende de la RAM y CPU disponibles. Si aumentas max_connections pero tu servidor no tiene recursos suficientes, las consultas serán más lentas porque MySQL tendrá que hacer malabares con la memoria.

¿Puedo ver cuántas conexiones uso en DirectAdmin?

En el panel de DirectAdmin, dentro de "MySQL Management", puedes ver el estado de tus bases de datos. Sin embargo, para el número exacto de conexiones activas necesitas acceso SSH y ejecutar SHOW STATUS LIKE 'Threads_connected';.

¿El error "Too many connections" afecta a todos los sitios de mi servidor?

Sí, si el límite se agota a nivel global, todos los sitios que usen ese MySQL se verán afectados. Por eso es importante solucionarlo rápido.


Resumen y recomendaciones finales

El error "Too many connections" en MySQL desde DirectAdmin es un problema molesto pero solucionable. El flujo de acción recomendado es:

  1. Diagnosticar cuántas conexiones hay activas.
  2. Aumentar el límite si es necesario (con moderación).
  3. Optimizar tu aplicación para que use menos conexiones.
  4. Reducir el tiempo de espera para liberar conexiones inactivas.
  5. Reiniciar MySQL como medida temporal.

Si tu sitio tiene un tráfico constante y elevado, plantéate migrar a un VPS donde tengas control total sobre la configuración. Y recuerda: la caché es tu mejor amiga. Un buen sistema de caché puede reducir las conexiones MySQL en un 90%.

[TIP]: Añade un monitor de bases de datos como MySQLTuner para revisar periódicamente la salud de tu MySQL. Puedes ejecutarlo con:

wget http://mysqltuner.pl/ -O mysqltuner.pl
perl mysqltuner.pl

Esto te dará recomendaciones específicas para tu configuración.

Esperamos que esta guía te haya sido útil. Si tienes más dudas, no dudes en contactar con tu proveedor de hosting o dejar un comentario. ¡Tu web volverá a estar en línea en poco tiempo!

¿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