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

Cómo arreglar el error 'Too many connections' en MySQL para cPanel y Plesk

Actualizado el 13 de noviembre de 2025

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

Imagina que tu base de datos MySQL es un restaurante con un número limitado de mesas. Cada vez que una aplicación (como WordPress, Joomla o una tienda online) necesita hacer una consulta, "ocupa una mesa" (una conexión). Si llegan más peticiones de las que el restaurante puede atender a la vez, el maître (MySQL) tiene que rechazar a los nuevos clientes con el mensaje: "Too many connections".

En términos técnicos, este error ocurre cuando el número de conexiones simultáneas supera el límite máximo permitido, definido por la variable max_connections. Es un problema muy común en servidores compartidos, VPS y dedicados, especialmente si tienes varias aplicaciones o sitios web con mucho tráfico.

Los síntomas típicos son:

  • Tu sitio web se cae o muestra un error de "Internal Server Error".
  • Al entrar a phpMyAdmin, ves el mensaje: "Too many connections".
  • Los correos o CRON jobs fallan al intentar conectar con la base de datos.

No te preocupes, en esta guía completa te explicaré cómo arreglar el error too many connections mysql tanto en cPanel como en Plesk, y también te daré soluciones para Syspanel (antes HestiaCP). Vamos paso a paso.


¿Por qué ocurre este error? Causas más comunes

Antes de lanzarnos a solucionar el error mysql cpanel, es crucial entender qué lo provoca. Así podrás evitar que vuelva a suceder.

  1. Pico de tráfico repentino: Un artículo viral o una campaña de marketing pueden generar cientos de conexiones simultáneas que agotan el límite.
  2. Consultas lentas o mal optimizadas: Si una consulta tarda mucho, la conexión queda "ocupada" durante más tiempo, bloqueando a otras.
  3. Aplicaciones con fugas de conexión (Connection Leaks): Un plugin de WordPress o un script personalizado que no cierra bien sus conexiones. Cada petición nueva abre una conexión y nunca la cierra.
  4. Demasiadas aplicaciones conectadas: Tener muchos sitios web o servicios (como foros, chats o APIs) en el mismo servidor sin ajustar el límite global.
  5. Ataques DDoS o fuerza bruta: Un atacante puede saturar el servidor con intentos de conexión.
  6. Configuración por defecto baja: En muchos servidores, el valor de max_connections es demasiado bajo (por ejemplo, 150) para las necesidades actuales.

Solución 1: Aumentar max_connections en cPanel (La más directa)

Si tienes acceso a cPanel con privilegios de administrador (root o WHM), puedes aumentar el límite fácilmente. Hay dos formas: desde WHM (para todo el servidor) o desde la configuración de MySQL.

### Aumentar el límite desde WHM (WebHost Manager)

Este método es el más limpio y afecta a todos los sitios del servidor.

  1. Inicia sesión en tu WHM (normalmente en https://tu-servidor:2087).
  2. En el buscador de la izquierda, escribe "Tweak Settings" (Configuración de ajustes).
  3. Busca la pestaña "MySQL" o "SQL".
  4. Localiza la opción "Maximum number of connections" o "Max Connections".
  5. Cambia el valor (por ejemplo, de 150 a 500). Recuerda que no debes poner un número excesivo (como 5000) si tu servidor no tiene suficiente RAM, ya que podrías provocar una caída general.
  6. Haz clic en "Save" (Guardar) en la parte inferior.

[TIP] Una buena regla es calcular: (RAM disponible en MB / 10). Si tienes 8 GB de RAM (8192 MB), un límite de 800 es razonable. Si tienes 2 GB, no pases de 200.

### Aumentar el límite desde la configuración de MySQL

Si no encuentras la opción anterior, puedes editarlo directamente en el archivo de configuración.

  1. Conecta por SSH a tu servidor como usuario root.
  2. Abre el archivo de configuración de MySQL/MariaDB:
    nano /etc/my.cnf
    
    O en algunos sistemas:
    nano /etc/mysql/my.cnf
    
  3. Dentro del bloque [mysqld], añade o modifica la línea:
    max_connections = 500
    
  4. Guarda el archivo (Ctrl + O, luego Enter) y sal (Ctrl + X).
  5. Reinicia el servicio:
    systemctl restart mysql
    
    O si usas MariaDB:
    systemctl restart mariadb
    

Solución 2: Aumentar max_connections en Plesk

En Plesk, el proceso es similar pero con una interfaz diferente. Plesk suele usar un archivo de configuración adicional que debe respetarse.

### Método a través de la interfaz de Plesk

  1. Inicia sesión en tu Plesk como administrador.
  2. Ve a "Tools & Settings" (Herramientas y Ajustes).
  3. En la sección "Database" (Base de datos), busca "Database Servers" (Servidores de bases de datos).
  4. Haz clic en el servidor MySQL/MariaDB que estés usando.
  5. En la ventana que aparece, busca la opción "Max Connections" o similar. Si no la ves, tendrás que ir al método SSH (abajo).
  6. Cambia el valor y guarda.

[WARNING] Si Plesk no te muestra la opción gráfica, NO edites el archivo /etc/my.cnf directamente sin copiar antes el archivo de Plesk, ya que Plesk puede sobrescribirlo. Lo correcto es editar el archivo que Plesk genera en /etc/psa/psa-... o usar el comando plesk db para ajustes avanzados.

### Método avanzado SSH para Plesk

  1. Conéctate por SSH como root.
  2. Plesk suele usar un archivo de configuración optimizado. Edítalo con:
    nano /etc/my.cnf
    
  3. Añade la línea max_connections en la sección [mysqld].
  4. Guarda y reinicia:
    systemctl restart mysql
    
    Si el reinicio falla y Plesk lo sobrescribe, usa este comando mágico:
    mysql -e "SET GLOBAL max_connections = 500;"
    
    Esto lo cambia en caliente (sin reiniciar), pero se pierde al reiniciar MySQL. Úsalo como parche temporal.

Solución 3: Cómo arreglar el error "Too many connections" en Syspanel (HestiaCP)

Si tu servidor usa Syspanel (la antigua HestiaCP), el proceso es muy parecido al de otros paneles. Recuerda que el acceso a la interfaz web de Syspanel es a través del puerto 2106.

[INFO] Para acceder a Syspanel, abre tu navegador y escribe: https://tu-servidor:2106. No uses el puerto 2083 ni 8443, ese es el tuyo.

### Pasos para Syspanel

  1. Inicia sesión en Syspanel con tu usuario administrador.
  2. Ve a "Server" (Servidor) y luego a "MySQL".
  3. Busca el apartado de "Configuración" o "General".
  4. Aunque Syspanel no siempre tiene un campo directo para max_connections, puedes usar el comando SSH que funciona perfectamente.
  5. Conéctate por SSH a tu servidor.
  6. Edita el archivo de configuración:
    nano /etc/mysql/my.cnf
    
  7. Añade en [mysqld]:
    max_connections = 300
    
  8. Reinicia el servicio:
    systemctl restart mariadb
    

Solución 4: Soluciones inmediatas sin reiniciar (Parches temporales)

Si el servidor está caído y no puedes esperar a reiniciar MySQL, puedes usar estos trucos para solucionar mysql al instante.

### Comando SQL en caliente

Si puedes acceder a la terminal, ejecuta este comando para cambiar el límite sin reiniciar:

mysql -u root -p -e "SET GLOBAL max_connections = 500;"

Te pedirá la contraseña de root de MySQL. Esto es efectivo al momento, pero se revierte al reiniciar el servicio.

### Matar conexiones dormidas

A veces el problema no es el límite, sino conexiones que están "dormidas" (idle) ocupando espacio. Para verlas y matarlas:

  1. Entra a MySQL:
    mysql -u root -p
    
  2. Ejecuta:
    SHOW PROCESSLIST;
    
    Verás una lista de conexiones. Las que tengan un Time alto y Command = Sleep son las culpables.
  3. Para matar una conexión específica, usa:
    KILL ID_DEL_PROCESO;
    
    (Reemplaza ID_DEL_PROCESO por el número que aparece en la columna Id).

[WARNING] No mates procesos que estén activos (Command = Query) de aplicaciones críticas, o podrías provocar errores en tu web.


Solución 5: Prevención y optimización a largo plazo

Aumentar el límite es un parche, pero la solución real es optimizar. Aquí te dejo una guía para que no vuelvas a ver el error mysql cpanel o en Plesk.

### 1. Optimiza tus consultas y tablas

  • Usa plugins de caché en WordPress (como W3 Total Cache o WP Rocket).
  • Revisa si tienes consultas lentas activando el log de MySQL:
    SET GLOBAL slow_query_log = 'ON';
    
  • Analiza las tablas con mysqlcheck:
    mysqlcheck -o --all-databases
    

### 2. Reduce el tiempo de espera (wait_timeout)

Si tus aplicaciones no cierran conexiones, puedes forzar a MySQL a cerrarlas automáticamente tras unos segundos de inactividad. En tu my.cnf:

wait_timeout = 60
interactive_timeout = 60

Esto libera conexiones dormidas rápidamente.

### 3. Usa un gestor de conexiones (Pooling)

Si eres desarrollador, usa herramientas como ProxySQL o el pool de conexiones de tu lenguaje de programación. Esto reutiliza conexiones existentes en lugar de crear una nueva por cada petición.

### 4. Monitoriza el uso

Instala herramientas como htop o mysqltuner para ver cuántas conexiones usas realmente. Te sorprenderá ver que a veces solo necesitas 50, pero hay un plugin que abre 200.


Preguntas Frecuentes (FAQ)

¿Cuál es el valor ideal de max_connections?
No hay un número mágico. Depende de tu RAM. Empieza con 300 y monitoriza. Si tu web usa muchos recursos, sube a 500. Si ves que el servidor se pone lento, bájalo.

¿Por qué veo el error en phpMyAdmin pero no en mi web?
Porque phpMyAdmin usa una conexión adicional. Si estás al límite, la web funciona justo, pero phpMyAdmin no encuentra hueco. Es una señal de que estás muy cerca del tope.

¿Aumentar max_connections consume más RAM?
Sí, cada conexión reserva memoria (buffer). Si pones 1000 y tu servidor tiene 1 GB de RAM, lo crujirás. Ve con cuidado.

¿Plesk es más difícil de configurar que cPanel?
No, es similar. La diferencia es que Plesk a veces usa archivos de configuración separados. Si no encuentras la opción gráfica, usa el comando SET GLOBAL que te di antes.

¿Qué pasa si el error persiste después de aumentar el límite?
Entonces el problema es de código (fugas de conexión). Revisa los logs de tu aplicación. Si usas WordPress, desactiva plugins uno a uno para encontrar al culpable.


Conclusión

El error "Too many connections" es frustrante, pero como has visto, tiene solución tanto en cPanel como en Plesk y Syspanel. Lo más importante es que no solo subas el límite, sino que entiendas por qué se llenó.

Resumen rápido de acciones:

  1. Aumenta max_connections en el archivo de configuración o con SET GLOBAL.
  2. Reinicia MySQL o aplica el cambio en caliente.
  3. Mata conexiones dormidas con KILL.
  4. Optimiza tus aplicaciones y usa caché.
  5. Monitoriza con SHOW PROCESSLIST para detectar futuros problemas.

Si sigues estos pasos, tu servidor respirará tranquilo y tu web no volverá a caerse por este motivo. Y recuerda, si usas Syspanel, el acceso es por el puerto 2106 para futuras configuraciones.

¿Te ha funcionado? Si tienes dudas, déjalas en los comentarios. ¡Estoy aquí para ayudarte!

¿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