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

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

Actualizado el 22 de febrero de 2026

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

Imagina que tu servidor MySQL es un restaurante con un número limitado de mesas. Cuando todas las mesas están ocupadas, los nuevos clientes tienen que esperar fuera. El error "Too many connections" es exactamente eso: tu base de datos ha alcanzado el número máximo de conexiones simultáneas permitidas, y cualquier nueva petición es rechazada con este mensaje.

Este problema es especialmente común en entornos Plesk porque cada sitio web, cada aplicación y cada script PHP abre sus propias conexiones a la base de datos. Si tienes varios sitios activos, un plugin mal optimizado o un pico de tráfico, puedes agotar rápidamente ese límite.

El mensaje típico que verás en tu sitio o en los logs es:

Warning: mysqli::mysqli(): (HY000/1040): Too many connections

O en el panel de administración de Plesk, al intentar acceder a la base de datos, verás un error similar.


¿Por qué ocurre el error too many connections plesk?

Antes de lanzarte a cambiar valores, es importante entender las causas más comunes. Así podrás aplicar la solución correcta y, sobre todo, evitar que vuelva a pasar.

1. Límite por defecto demasiado bajo

El valor por defecto de max_connections en MySQL suele ser 151. En un servidor con varios sitios, esto se queda corto rápidamente. Cada conexión abierta (aunque esté inactiva) cuenta para el límite.

2. Conexiones que no se cierran correctamente

Aplicaciones mal programadas o plugins de WordPress que no cierran las conexiones a la base de datos después de usarlas. Esto provoca que las conexiones se acumulen y se agoten.

3. Picos de tráfico inesperados

Un aumento repentino de visitantes (por una promo, una noticia viral, etc.) puede saturar el servidor de bases de datos. Cada visita nueva intenta abrir una conexión, y si el límite es bajo, el servidor colapsa.

4. Consultas lentas que bloquean conexiones

Consultas SQL pesadas que tardan mucho en ejecutarse mantienen la conexión ocupada durante más tiempo. Si tienes varias de estas simultáneas, agotarán el límite de forma rápida.

5. Uso compartido del servidor

Si tu plan de hosting es compartido, otros usuarios del mismo servidor también consumen conexiones del mismo MySQL. No tienes control sobre ello, pero puedes mitigarlo optimizando tus propias conexiones.


Soluciones paso a paso para arreglar el error en Plesk

Vamos a ver las soluciones de menos a más invasivas. Empieza por las simples y solo sube de nivel si el problema persiste.


Solución 1: Aumentar temporalmente el límite (sin reiniciar)

Esta es la solución rápida para cuando el sitio está caído y necesitas recuperar el acceso YA. No es permanente, pero te da margen para aplicar las otras soluciones.

  1. Accede por SSH a tu servidor. Si no sabes cómo, en Plesk puedes usar el botón "SSH" en la pestaña de la suscripción (si tu plan lo permite).

  2. Conéctate a MySQL como root. Ejecuta:

    mysql -u root -p
    

    Te pedirá la contraseña root de MySQL. Si no la recuerdas, puedes verla en Plesk > "Bases de datos" > tu base de datos > "Mostrar contraseña".

  3. Una vez dentro de MySQL, ejecuta el siguiente comando para ver el límite actual:

    SHOW VARIABLES LIKE 'max_connections';
    
  4. Aumenta el límite en caliente (sin reiniciar el servicio):

    SET GLOBAL max_connections = 500;
    

    Esto sube el límite a 500 conexiones de inmediato.

  5. Sal de MySQL con EXIT; y verifica que tu sitio web vuelve a cargar.

[WARNING] Este cambio se pierde al reiniciar MySQL. Es una solución temporal para recuperar el acceso. Debes aplicar la siguiente solución para hacerlo permanente.


Solución 2: Cambiar max_connections de forma permanente

Ahora vamos a hacer que el nuevo límite sea permanente. Esto se hace editando el archivo de configuración de MySQL.

  1. Localiza el archivo de configuración. En la mayoría de servidores con Plesk, está en /etc/mysql/my.cnf o /etc/my.cnf. Puedes encontrarlo con:

    mysql --help | grep "Default options" -A 1
    
  2. Edita el archivo con nano o vim:

    sudo nano /etc/mysql/my.cnf
    
  3. Busca la sección [mysqld] (si no existe, créala al final del archivo).

  4. Añade o modifica la línea:

    [mysqld]
    max_connections = 500
    

    [TIP] No pongas un número excesivamente alto (como 5000) si tu servidor tiene poca RAM. Cada conexión consume memoria. Para un VPS con 2GB de RAM, 300-500 es razonable. Para un servidor dedicado con 16GB, puedes subir a 1000.

  5. Guarda el archivo (Ctrl+O, luego Enter, y Ctrl+X para salir en nano).

  6. Reinicia MySQL para aplicar los cambios:

    sudo systemctl restart mysql
    

    O si usas MariaDB:

    sudo systemctl restart mariadb
    
  7. Verifica que el cambio se aplicó:

    mysql -u root -p -e "SHOW VARIABLES LIKE 'max_connections';"
    

Solución 3: Optimizar las conexiones de tus aplicaciones

Aumentar el límite es un parche. Si no optimizas el uso, volverás a tener problemas. Aquí tienes acciones concretas:

3.1. Para WordPress (el caso más común)

  1. Instala un plugin de caché como W3 Total Cache o WP Super Cache. Esto reduce drásticamente las consultas a la base de datos.

  2. Revisa los plugins. Desactiva todos los que no uses. Los plugins de estadísticas en tiempo real, backups automáticos o social feed suelen abrir muchas conexiones.

  3. Usa un plugin de optimización de base de datos como WP-Optimize para limpiar transients y tablas basura.

3.2. Para cualquier aplicación PHP

  1. Cierra las conexiones explícitamente. En tu código, después de hacer las consultas, usa:

    mysqli_close($conexion);
    
  2. Usa un pool de conexiones si tu aplicación es compleja. Herramientas como ProxySQL o MariaDB MaxScale gestionan las conexiones de forma eficiente.

3.3. Ajusta el tiempo de espera de las conexiones inactivas

Las conexiones que se quedan abiertas sin hacer nada consumen recursos. Puedes reducir el tiempo de espera en MySQL:

SET GLOBAL wait_timeout = 60;
SET GLOBAL interactive_timeout = 60;

Esto hará que las conexiones inactivas se cierren después de 60 segundos. Para hacerlo permanente, añade al archivo de configuración:

[mysqld]
wait_timeout = 60
interactive_timeout = 60

Solución 4: Identificar y matar procesos que consumen conexiones

A veces el problema no es el límite, sino procesos zombis que se quedan colgados. Puedes verlos y eliminarlos:

  1. Conéctate a MySQL:

    mysql -u root -p
    
  2. Lista todos los procesos activos:

    SHOW PROCESSLIST;
    
  3. Verás una tabla con las conexiones. Fíjate en la columna Command y Time. Si hay procesos Sleep con mucho tiempo, son conexiones inactivas.

  4. Mata un proceso específico (sustituye ID por el número de la columna Id):

    KILL ID;
    
  5. Para matar todas las conexiones inactivas de golpe, puedes usar:

    SHOW PROCESSLIST;
    

    Y luego ejecutar KILL para cada ID que veas en estado Sleep.

[INFO] Si tienes muchos procesos Sleep, es un síntoma de que tu aplicación no cierra bien las conexiones. Revisa el código o los plugins.


Solución 5: Usar herramientas de monitorización (para prevenir)

La mejor solución es prevenir. Configura alertas para saber cuándo te acercas al límite.

Opción A: Desde Plesk (sin instalar nada)

  1. En Plesk, ve a "Herramientas y ajustes" > "Monitor de salud del servidor".

  2. Busca la sección de MySQL y observa el uso de conexiones. Plesk te muestra un gráfico con el número de conexiones activas.

  3. Configura una notificación por correo cuando el uso supere el 80%. Puedes hacerlo en Plesk > "Herramientas y ajustes" > "Notificaciones".

Opción B: Con comandos manuales

Crea un script que verifique el número de conexiones y te avise:

#!/bin/bash
# Guarda en /usr/local/bin/check_connections.sh
CONN=$(mysql -u root -pTU_CONTRASEÑA -N -e "SHOW STATUS LIKE 'Threads_connected';" | awk '{print $2}')
LIMIT=$(mysql -u root -pTU_CONTRASEÑA -N -e "SHOW VARIABLES LIKE 'max_connections';" | awk '{print $2}')
USAGE=$((CONN * 100 / LIMIT))

if [ $USAGE -gt 80 ]; then
    echo "Alerta: Conexiones MySQL al ${USAGE}%" | mail -s "Alerta MySQL" tu@email.com
fi

Y añádelo al cron para que se ejecute cada 5 minutos:

crontab -e
*/5 * * * * /usr/local/bin/check_connections.sh

Solución 6: Cambiar el motor de almacenamiento o migrar a MariaDB

Si el problema es recurrente y tu servidor lo soporta, considera migrar de MySQL a MariaDB. MariaDB es un reemplazo directo y suele gestionar mejor las conexiones concurrentes.

  1. Haz una copia de seguridad de todas tus bases de datos desde Plesk.

  2. Instala MariaDB:

    sudo apt install mariadb-server
    
  3. Migra los datos. Plesk tiene una herramienta en "Herramientas y ajustes" > "Servidor de bases de datos" que te permite cambiar entre MySQL y MariaDB de forma guiada.

[TIP] Si tu plan usa Syspanel (anteriormente llamado HestiaCP), el puerto de acceso es el 2106. En este panel, el proceso de migración es similar: ve a "Bases de datos" y usa el asistente de migración.


Preguntas frecuentes (FAQ)

¿Cuál es el valor ideal de max_connections?

No hay un número mágico. Depende de la RAM de tu servidor y del tamaño de tus bases de datos. Como regla general:

  • 1GB RAM: 100-150 conexiones.
  • 2GB RAM: 200-300 conexiones.
  • 4GB RAM: 400-500 conexiones.
  • 8GB RAM o más: 800+ conexiones.

Puedes calcularlo con la fórmula: (RAM disponible / memoria media por conexión). Cada conexión consume entre 1MB y 5MB dependiendo de la configuración.

¿El error "Too many connections" puede dañar mi base de datos?

No, no daña los datos. Simplemente bloquea nuevas conexiones temporalmente. Los datos ya almacenados están seguros.

¿Cómo puedo saber cuántas conexiones tengo activas ahora mismo?

Ejecuta en MySQL:

SHOW STATUS LIKE 'Threads_connected';

¿Plesk tiene un límite de conexiones por base de datos?

Sí, Plesk te permite establecer un límite por suscripción. Ve a la suscripción > "Bases de datos" > tu base de datos > "Cambiar configuración". Ahí puedes poner un límite específico.

¿Puedo aumentar max_connections sin acceso SSH?

Si no tienes SSH, puedes intentar desde phpMyAdmin (que viene en Plesk):

  1. Entra en phpMyAdmin desde Plesk.
  2. Ve a la pestaña "Variables".
  3. Busca max_connections y cambia el valor.
  4. Pulsa "Guardar".

Esto hará el cambio en caliente, pero no es permanente. Para que sea definitivo necesitas acceso SSH o contactar con tu proveedor de hosting.

¿Qué hago si nada de esto funciona?

Si has probado todo y el error persiste, es probable que el problema esté en el servidor (memoria insuficiente, configuración del sistema operativo, etc.). En ese caso, contacta con tu proveedor de hosting y explícales el error. Ellos pueden revisar los logs del servidor y ajustar la configuración a nivel de sistema.


Resumen y plan de acción

Para solucionar el error "Too many connections" en Plesk, sigue este orden:

  1. Recupera el acceso: Aumenta el límite en caliente con SET GLOBAL max_connections = 500;.
  2. Hazlo permanente: Edita my.cnf y añade max_connections = 500.
  3. Optimiza tus aplicaciones: Cierra conexiones, usa caché, desactiva plugins innecesarios.
  4. Monitorea: Configura alertas para saber cuándo te acercas al límite.
  5. Si es necesario, migra a MariaDB o contacta con tu proveedor.

Con estos pasos, no solo arreglarás el error, sino que evitarás que vuelva a aparecer. Recuerda que la prevención es mejor que la cura, así que revisa periódicamente el uso de conexiones en tu servidor.

[INFO] Si tu panel de control es Syspanel (puerto 2106), el proceso es idéntico, solo cambia la interfaz gráfica. Los comandos de terminal son los mismos.

¿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