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

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

Actualizado el 17 de abril de 2026

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

Si estás leyendo esto, probablemente te has encontrado con un mensaje de error que dice algo como "User 'tu_usuario' has exceeded the 'max_user_connections' resource" o simplemente "Too many connections". No te preocupes, es uno de los errores más comunes en servidores de hosting y tiene solución.

Este error significa que tu servidor MySQL (o MariaDB) ha alcanzado el límite máximo de conexiones simultáneas que puede manejar. Piensa en ello como un restaurante con un número limitado de mesas: si todas están ocupadas, los nuevos clientes tienen que esperar o irse.

Cuando un sitio web o una aplicación intenta conectarse a la base de datos y no hay "mesas libres", MySQL rechaza la conexión y muestra ese temido mensaje.


¿Por qué ocurre este error?

Antes de lanzarnos a arreglarlo, es importante entender las causas más comunes:

  • Aumento del tráfico web: Si tu sitio recibe más visitas de lo normal, se generan más conexiones simultáneas.
  • Consultas lentas o mal optimizadas: Una consulta que tarda mucho tiempo mantiene la conexión abierta durante más tiempo del necesario.
  • Aplicaciones con fugas de conexiones: Algunos scripts no cierran correctamente las conexiones a la base de datos después de usarlas.
  • Configuración demasiado baja de max_connections: El valor predeterminado en muchos servidores es 150 o 151, lo cual puede ser insuficiente.
  • Ataques DDoS o bots: Los ataques pueden saturar el servidor con solicitudes falsas.
  • Uso de múltiples aplicaciones: Si tienes varios sitios web o servicios conectados a la misma base de datos.

Primeros pasos: comprobar el estado actual

Para arreglar el error too many connections mysql, primero necesitas saber cuál es el límite actual y cuántas conexiones se están utilizando.

Accede por SSH (si tienes acceso root)

mysql -u root -p

Una vez dentro de MySQL, ejecuta:

SHOW VARIABLES LIKE 'max_connections';
SHOW STATUS LIKE 'Threads_connected';
SHOW STATUS LIKE 'Max_used_connections';

Esto te mostrará el límite máximo, las conexiones activas en ese momento y el pico máximo histórico de conexiones utilizadas.

[INFO] Si no tienes acceso SSH, puedes usar phpMyAdmin desde DirectAdmin o cPanel. Ve a la pestaña "Estado" o "Variables" para ver información similar.

Identificar qué procesos están consumiendo conexiones

SHOW PROCESSLIST;

Esta consulta te muestra todas las conexiones activas. Si ves muchas en estado "Sleep" durante mucho tiempo, es probable que haya una fuga de conexiones.


Solución 1: Aumentar max_connections en DirectAdmin

El error max_connections directadmin es muy común. La buena noticia es que puedes aumentarlo fácilmente si tienes acceso de administrador.

Método A: Usando el panel de control (la forma más fácil)

  1. Inicia sesión en DirectAdmin como administrador.
  2. Ve a Administración de Servidores → Configuración de MySQL.
  3. Busca el campo Max Connections o max_connections.
  4. Cambia el valor a 300 o 500 (dependiendo de la memoria RAM de tu servidor).
  5. Guarda los cambios y reinicia MySQL:
systemctl restart mysql

O si usas MariaDB:

systemctl restart mariadb

Método B: Editando el archivo de configuración

Si prefieres hacerlo manualmente:

  1. Accede por SSH como root.
  2. Edita el archivo de configuración de MySQL:
nano /etc/my.cnf

O en algunos sistemas:

nano /etc/mysql/my.cnf
  1. Busca la sección [mysqld] y añade o modifica esta línea:
max_connections = 500
  1. Guarda el archivo (Ctrl+O, luego Enter, y Ctrl+X para salir).
  2. Reinicia el servicio:
systemctl restart mysql

[WARNING] No subas este valor a más de 1000 sin consultar con tu proveedor o sin monitorizar la memoria RAM. Cada conexión consume aproximadamente 2-5 MB de RAM.


Solución 2: Aumentar max_connections en cPanel

Para los usuarios de cPanel, el proceso es ligeramente diferente.

Método A: Desde WHM (Web Host Manager)

  1. Inicia sesión en WHM (normalmente en https://tu-servidor:2087).
  2. Ve a Home → SQL Services → Configure MySQL Server.
  3. Busca la opción max_connections.
  4. Cambia el valor y haz clic en Save Configuration.
  5. WHM reiniciará MySQL automáticamente.

Método B: Editando el archivo de configuración

  1. Accede por SSH como root.
  2. Edita el archivo /etc/my.cnf o /etc/my.cnf.d/server.cnf.
  3. Añade o modifica:
[mysqld]
max_connections = 500
  1. Guarda y reinicia:
systemctl restart mysql

Solución 3: Optimizar consultas y aplicaciones (solución a largo plazo)

Aumentar el límite es una solución rápida, pero no es la definitiva. Si constantemente te quedas sin conexiones, es hora de optimizar.

1. Usa un pool de conexiones

Si tu aplicación está escrita en PHP, considera usar Persistent Connections (mysql_pconnect) con moderación o un pool de conexiones como ProxySQL.

2. Cierra las conexiones correctamente

Asegúrate de que tu código cierra las conexiones después de usarlas. En PHP:

$conn->close(); // En MySQLi
$pdo = null;    // En PDO

3. Configura un tiempo de espera para conexiones inactivas

Añade esto a tu configuración de MySQL:

wait_timeout = 60
interactive_timeout = 60

Esto hará que las conexiones que no hagan nada durante 60 segundos se cierren automáticamente.

4. Identifica consultas lentas

Activa el log de consultas lentas:

slow_query_log = 1
slow_query_log_file = /var/log/mysql-slow.log
long_query_time = 2

Luego revisa el log y optimiza las consultas que tarden más de 2 segundos.


Solución 4: Reiniciar MySQL para liberar conexiones (solución temporal)

Si necesitas una solución inmediata mientras investigas la causa, puedes reiniciar el servicio MySQL para liberar todas las conexiones.

En DirectAdmin:

systemctl restart mysql

En cPanel:

/scripts/restartsrv_mysql

[WARNING] Reiniciar MySQL puede causar una breve interrupción del servicio (10-30 segundos). No lo hagas durante horas pico si puedes evitarlo.


Solución 5: Aumentar max_user_connections (límite por usuario)

A veces el problema no es el límite global, sino un límite específico por usuario. MySQL tiene dos parámetros:

  • max_connections: Límite global (todos los usuarios).
  • max_user_connections: Límite por usuario.

Para ver el límite por usuario:

SHOW VARIABLES LIKE 'max_user_connections';

Si está en 0, significa que no hay límite por usuario (solo aplica el global). Si quieres aumentarlo para un usuario específico:

GRANT USAGE ON *.* TO 'usuario'@'localhost' WITH MAX_USER_CONNECTIONS 200;

Luego aplica los cambios:

FLUSH PRIVILEGES;

Solución 6: Usar Syspanel (HestiaCP) para gestionar MySQL

Si tu servidor usa Syspanel (anteriormente conocido como HestiaCP), el proceso es similar pero con matices.

[INFO] Syspanel es un panel de control gratuito y de código abierto. Accede a él a través del puerto 2106 (por ejemplo: https://tu-servidor:2106).

Pasos para aumentar max_connections en Syspanel:

  1. Accede a Syspanel usando el puerto 2106.
  2. Ve a Servidor → MySQL.
  3. Busca la configuración de max_connections.
  4. Modifica el valor y guarda.
  5. Reinicia MySQL desde la misma interfaz o usando:
systemctl restart mysql

Si no encuentras la opción, edita el archivo /etc/mysql/my.cnf manualmente como se explicó anteriormente.


Solución 7: Soluciones avanzadas para servidores con muchos sitios

Si gestionas un servidor con muchos sitios web, considera estas opciones:

Implementar un balanceador de base de datos

Usa ProxySQL o MySQL Router para gestionar las conexiones de manera más eficiente.

Migrar a MariaDB

MariaDB suele gestionar mejor las conexiones concurrentes que MySQL. La migración es sencilla y puede mejorar el rendimiento.

Usar Redis o Memcached

Para consultas repetitivas, usa un sistema de caché para reducir la carga en MySQL.


Preguntas frecuentes (FAQ)

¿Cuántas conexiones debería tener mi servidor?

Depende de la RAM. Una regla general:

  • 2 GB RAM: 150-200 conexiones
  • 4 GB RAM: 300-400 conexiones
  • 8 GB RAM: 500-800 conexiones
  • 16+ GB RAM: 1000+ conexiones

¿Por qué sigo teniendo el error después de aumentar el límite?

Si aumentaste max_connections y sigues teniendo el error too many connections mysql, el problema es más profundo. Revisa si hay aplicaciones que no cierran conexiones o si hay un ataque DDoS.

¿Puedo poner max_connections en 0 o ilimitado?

No, MySQL no permite "ilimitado". El máximo realista es 100000, pero tu servidor colapsará mucho antes por falta de memoria.

¿Cómo puedo monitorear las conexiones en tiempo real?

Usa este comando en SSH:

watch -n 1 'mysql -u root -p -e "SHOW STATUS LIKE \"Threads_connected\";"'

¿Qué hago si no tengo acceso root?

Contacta con tu proveedor de hosting y solicita un aumento de max_connections. Muchos proveedores lo hacen de forma gratuita si justificas la necesidad.


Resumen final

El error too many connections mysql es molesto pero solucionable. Aquí tienes el plan de acción:

  1. Diagnostica: Usa SHOW PROCESSLIST para ver qué está pasando.
  2. Aumenta el límite: Modifica max_connections en tu panel de control o archivo de configuración.
  3. Optimiza: Identifica consultas lentas y mejora tu código.
  4. Monitorea: Usa herramientas como pt-query-digest o mysqltuner para análisis profundos.

[TIP] Si después de seguir todos estos pasos sigues teniendo problemas, considera contratar un servidor con más recursos o migrar a un sistema de base de datos en la nube como Amazon RDS o Google Cloud SQL.

Recuerda que el error error mysql conexiones no es el fin del mundo. Con un poco de paciencia y las soluciones que te he dado, tu sitio web volverá a funcionar sin problemas.

¿Tienes alguna otra pregunta sobre este tema? Déjala en los comentarios y estaré encantado de ayudarte. ¡Buena suerte con tu servidor!

¿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