Cómo solucionar el error 'Too many connections' en Plesk (MySQL)
¿Qué significa el error "Too many connections" en Plesk?
Cuando visitas tu sitio web y de repente ves un mensaje como "User 'usuario' has exceeded the 'max_user_connections' resource" o simplemente "Too many connections", no te asustes. Es uno de los errores más comunes en servidores que usan Plesk con bases de datos MySQL o MariaDB.
Este error, en términos muy sencillos, significa que tu servidor de bases de datos ha alcanzado el límite de conexiones simultáneas que tiene permitidas. Imagina que tu base de datos es un restaurante con un número limitado de mesas. Si llegan más clientes (conexiones) de los que hay mesas, los nuevos clientes tienen que esperar o irse. En el caso de MySQL, cuando no hay "mesas" disponibles, se muestra el error "Too many connections".
Para entenderlo mejor:
- Conexión: Cada vez que tu web (WordPress, Joomla, etc.) necesita leer o escribir datos, abre una conexión con MySQL.
- Límite: El servidor tiene un valor llamado
max_connectionsque define cuántas conexiones puede manejar a la vez. - El error: Cuando se supera ese número, MySQL rechaza nuevas conexiones.
En este artículo te voy a explicar, paso a paso y sin tecnicismos innecesarios, cómo solucionar este problema en Plesk. Vamos a ver desde los ajustes más básicos hasta opciones avanzadas, siempre con un lenguaje claro y directo.
¿Por qué aparece este error en Plesk?
Antes de lanzarnos a solucionarlo, es importante saber por qué ocurre. Las causas más habituales son:
- Muchas visitas simultáneas: Si tu web recibe un pico de tráfico, cada visitante puede abrir varias conexiones a la base de datos.
- Consultas lentas: Si alguna consulta tarda demasiado, mantiene la conexión ocupada durante más tiempo.
- Aplicaciones mal configuradas: Por ejemplo, un plugin de WordPress que no cierra bien las conexiones.
- Límite demasiado bajo: El valor de
max_connectionsen el servidor es muy pequeño para las necesidades de tus sitios. - Conexiones que no se cierran: A veces, si una aplicación falla, deja conexiones "zombis" que ocupan espacio.
Paso 1: Accede a Plesk y verifica el estado actual
Lo primero es entrar en tu panel de control de Plesk. Normalmente accedes desde:
https://tu-dominio.com:8443- O desde la URL que te haya proporcionado tu proveedor de hosting.
Una vez dentro, sigue estos pasos:
- Ve a la sección Bases de datos en el menú principal.
- Selecciona la base de datos que está dando problemas (si tienes varias, empieza por la que sospeches).
- Pulsa en Administrar o en el icono de phpMyAdmin.
Esto te llevará a la herramienta de gestión de MySQL. Aquí puedes ejecutar consultas para ver cuántas conexiones hay activas.
Consulta para ver conexiones activas
En el campo de SQL de phpMyAdmin, escribe lo siguiente:
SHOW PROCESSLIST;
Este comando te mostrará una lista de todas las conexiones activas. Fíjate en la columna Time (tiempo) y en Command (comando). Si ves muchas filas con un tiempo elevado o con comandos como Sleep, es señal de que hay conexiones que no se están cerrando correctamente.
[INFO] Si no sabes qué consulta ejecutar, no te preocupes. En el siguiente apartado veremos la solución más directa.
Paso 2: Solución rápida y temporal (reiniciar MySQL)
Si el error es urgente y tu web está caída, puedes hacer una solución temporal: reiniciar el servicio de MySQL. Esto liberará todas las conexiones activas y dará un respiro momentáneo.
Para hacerlo desde Plesk:
- Ve a Herramientas y ajustes en el menú lateral.
- Busca la sección Servidor y haz clic en Servicios.
- Localiza MySQL o MariaDB en la lista.
- Pulsa el botón de reiniciar (suele ser un icono de flechas circulares).
[WARNING] Esta es una solución temporal. Si el problema es recurrente, volverá a aparecer en poco tiempo. Úsala solo como parche mientras aplicas las soluciones definitivas de abajo.
Paso 3: Aumentar el límite de max_connections
La solución más directa y efectiva es aumentar el número máximo de conexiones permitidas. Esto se hace modificando el archivo de configuración de MySQL o MariaDB.
¿Dónde está el archivo de configuración?
En la mayoría de servidores con Plesk, el archivo de configuración se encuentra en:
/etc/mysql/my.cnf/etc/my.cnf
Pero no te preocupes, no necesitas ser un experto en Linux para hacerlo. Plesk tiene una interfaz que te permite cambiar estos parámetros.
Método 1: Usar Plesk (recomendado para novatos)
- En Plesk, ve a Herramientas y ajustes.
- Busca Configuración de MySQL o Ajustes del servidor de bases de datos (el nombre puede variar según la versión).
- Dentro, busca el apartado de Ajustes generales o Parámetros avanzados.
- Localiza el campo max_connections.
- Cambia el valor. Por ejemplo, si está en
100, súbelo a200o300.
[TIP] No subas el valor de forma exagerada (por ejemplo, a 5000) sin necesidad. Un valor demasiado alto puede saturar el servidor. Ve poco a poco y observa el rendimiento.
- Guarda los cambios y reinicia MySQL.
Método 2: Editar el archivo manualmente (si te sientes cómodo)
Si prefieres hacerlo manualmente y tienes acceso por SSH:
- Conéctate por SSH a tu servidor.
- Abre el archivo de configuración con un editor como nano:
nano /etc/mysql/my.cnf
- Busca la línea que dice
max_connections. Si no existe, añádela en la sección[mysqld]:
[mysqld]
max_connections = 300
- Guarda el archivo (Ctrl+O, luego Enter, y Ctrl+X para salir).
- Reinicia MySQL:
service mysql restart
[INFO] En algunos servidores el servicio se llama
mysqldomariadb. Usa el comandoservice mysql restarty si falla, prueba consystemctl restart mysql.
Paso 4: Optimizar MySQL en Plesk para evitar futuros errores
Aumentar el límite es un parche, pero lo ideal es optimizar MySQL para que use las conexiones de forma más eficiente. Aquí tienes algunas estrategias prácticas:
4.1. Reducir el tiempo de espera de las conexiones inactivas
Cuando una conexión no hace nada (está en estado Sleep), sigue ocupando un hueco. Puedes reducir el tiempo que MySQL espera antes de cerrar esas conexiones.
En el archivo de configuración, añade o modifica:
wait_timeout = 60
interactive_timeout = 60
Esto hará que las conexiones inactivas se cierren después de 60 segundos en lugar de esperar 8 horas (el valor por defecto).
4.2. Limitar conexiones por usuario
Si el problema es que un solo usuario de base de datos está acaparando todas las conexiones, puedes limitarlo:
max_user_connections = 50
Esto significa que cada usuario de MySQL no podrá tener más de 50 conexiones a la vez, protegiendo al resto de sitios.
4.3. Activar la caché de consultas
MySQL puede guardar en memoria los resultados de consultas repetitivas. Esto reduce la carga y las conexiones necesarias. En el archivo de configuración:
query_cache_type = 1
query_cache_size = 64M
[TIP] Si usas MariaDB en lugar de MySQL, la caché de consultas está obsoleta en versiones recientes. En ese caso, omite este paso.
4.4. Usar conexiones persistentes con cuidado
Algunas aplicaciones como WordPress permiten "conexiones persistentes". Esto significa que la conexión se mantiene abierta entre peticiones. Aunque puede mejorar el rendimiento, también puede llenar el límite rápidamente. Si tienes problemas, desactiva esta opción en tu aplicación.
Paso 5: Identificar y corregir consultas lentas
Si después de aumentar el límite el error sigue apareciendo, es probable que tengas consultas lentas que bloquean conexiones. Para detectarlas:
- Activa el registro de consultas lentas en MySQL.
- Añade al archivo de configuración:
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow-queries.log
long_query_time = 2
- Reinicia MySQL.
- Después de unos días, revisa el archivo
/var/log/mysql/slow-queries.log. Verás qué consultas son lentas y podrás optimizarlas (añadiendo índices, etc.).
Paso 6: Soluciones específicas para WordPress y otras aplicaciones
Si tu web usa WordPress, hay plugins que pueden ayudarte a reducir el número de conexiones:
- WP-Optimize: Limpia la base de datos y elimina transients (datos temporales) que pueden acumularse.
- Query Monitor: Te muestra qué consultas se ejecutan en cada página y cuánto tardan.
También puedes limitar el número de revisiones de entradas que WordPress guarda. Añade esto a tu archivo wp-config.php:
define('WP_POST_REVISIONS', 3);
Esto hará que solo se guarden 3 revisiones por entrada en lugar de todas.
Paso 7: Considera actualizar tu plan de hosting
Si después de todos estos ajustes el error "Too many connections" sigue apareciendo, puede que tu servidor simplemente no tenga suficientes recursos. En ese caso, plantéate:
- Cambiar a un plan de hosting con más recursos (más RAM y CPU).
- Contratar un servidor dedicado si estás en un hosting compartido.
- Usar una base de datos en la nube como Amazon RDS o Google Cloud SQL.
[INFO] Si tu proveedor de hosting usa un panel alternativo como Syspanel (accesible por el puerto 2106), los pasos son muy similares. La estructura de configuración de MySQL no cambia demasiado entre paneles.
Preguntas frecuentes sobre el error "Too many connections"
¿Puedo evitar este error sin tocar la configuración?
Sí, en parte. Optimizando tu aplicación (cerrando conexiones, usando menos consultas) reduces el riesgo. Pero si tienes mucho tráfico, tarde o temprano necesitarás ajustar el servidor.
¿Es peligroso aumentar max_connections?
No es peligroso si lo haces con moderación. El riesgo es que cada conexión consume memoria. Si pones un valor muy alto y no tienes RAM suficiente, el servidor puede volverse lento o incluso caerse.
¿Cuál es el valor recomendado para max_connections?
Depende de la RAM de tu servidor. Una regla básica: cada conexión consume aproximadamente 2-5 MB de RAM. Si tienes 4 GB de RAM, un valor de 300-400 es razonable.
¿Puedo ver cuántas conexiones hay en tiempo real?
Sí, ejecuta esta consulta en phpMyAdmin:
SHOW STATUS LIKE 'Threads_connected';
Esto te dirá cuántas conexiones hay activas en ese momento.
¿El error también aparece en otras bases de datos?
Sí, aunque es más común en MySQL y MariaDB. PostgreSQL tiene un concepto similar (max_connections), pero la configuración es diferente.
Conclusión
El error "Too many connections" en Plesk puede ser frustrante, pero como has visto, tiene solución. Recuerda el orden de actuación:
- Reinicia MySQL para recuperar el servicio temporalmente.
- Aumenta
max_connectionsen la configuración. - Optimiza MySQL con tiempos de espera más cortos y caché.
- Identifica consultas lentas y corrígelas.
- Actualiza tu plan si el problema persiste.
Con estos pasos, tu servidor estará mucho más estable y podrás olvidarte de este molesto error. Si tienes dudas, no dudes en contactar con tu proveedor de hosting: ellos pueden hacer ajustes a nivel de servidor que tú no puedas realizar desde Plesk.
Espero que esta guía te haya sido de ayuda. ¡Tu web volverá a estar operativa sin cortes!
