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

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

Actualizado el 11 de noviembre de 2025

¿Por qué aparece el error "Too many connections" en MySQL?

Este es uno de los avisos más temidos cuando administras un sitio web por cuenta propia. Ver el mensaje "Too many connections" en WordPress, en una tienda online o en cualquier aplicación que use bases de datos suele generar pánico, pero te adelanto algo: tiene solución y casi siempre puedes resolverlo sin perder datos.

El error significa literalmente que tu servidor MySQL (o MariaDB, su versión más moderna) ha alcanzado el límite máximo de conexiones simultáneas permitidas. Cada vez que tu web carga una página, ejecuta un plugin o un usuario inicia sesión, se abre una conexión a la base de datos. Si se abren más conexiones de las que el servidor permite, las nuevas peticiones se rechazan con este error.

Imagina que MySQL es un restaurante con un número limitado de mesas. Si todas las mesas están ocupadas y llegan más clientes, el maître (el servidor) les dice: "lo sentimos, no hay espacio". Eso es exactamente lo que ocurre con too many connections mysql.


¿Por qué se satura el límite de conexiones?

Antes de lanzarte a cambiar valores, es importante entender las causas más comunes. No quieres poner un parche y que el problema vuelva a aparecer al día siguiente.

1. Picos de tráfico inesperados

Si tu web sale en redes sociales o recibe un ataque de bots, el número de visitas simultáneas puede dispararse. Cada visitante puede abrir varias conexiones a la vez.

2. Consultas lentas o mal optimizadas

Una consulta SQL que tarda 10 segundos mantiene la conexión ocupada durante todo ese tiempo. Si tienes varias consultas lentas, las conexiones se agotan rápidamente.

3. Plugins o aplicaciones con fugas de conexiones

Algunos plugins de WordPress o scripts personalizados no cierran correctamente las conexiones a la base de datos. Cada página cargada deja una conexión "abierta" que no se libera.

4. El valor max_connections es demasiado bajo

El hosting compartido suele configurar límites muy conservadores, como 30 o 50 conexiones. Si tu sitio crece, ese número se queda corto.

5. Procesos zombis o dormidos

Conexiones que quedan en estado "Sleep" por mucho tiempo. Ocupan espacio sin hacer nada útil.


Primeros pasos: accede a tu panel de control

Dependiendo de si usas DirectAdmin o cPanel, el método de acceso cambia un poco, pero los conceptos son los mismos. Te explico ambos casos.

Si usas DirectAdmin

  1. Entra en tu panel de DirectAdmin con tus credenciales.
  2. Busca la sección "MySQL Management" o "Base de Datos MySQL".
  3. Allí verás tus bases de datos y el usuario asociado.
  4. Para ejecutar comandos avanzados, necesitarás acceso SSH o la herramienta phpMyAdmin que suele estar disponible en el mismo panel.

Si usas cPanel

  1. Accede a tu cPanel.
  2. Busca la sección "Bases de Datos".
  3. Haz clic en "phpMyAdmin" para acceder a tus bases de datos.
  4. También puedes usar la herramienta "MySQL Remote" o "Remote MySQL" para gestionar accesos.

[INFO] Si tu hosting es de tipo compartido, probablemente no tengas acceso directo al archivo de configuración de MySQL. En ese caso, la solución pasa por contactar con el soporte o usar alternativas que te explico más abajo.


Solución 1: Aumentar max_connections desde SSH (hosting VPS o dedicado)

Si tienes un servidor VPS o dedicado, puedes modificar el valor de max_connections directamente. Este es el método más efectivo cuando el límite actual es insuficiente.

Paso 1: Conecta por SSH

Abre tu terminal y conéctate a tu servidor:

ssh usuario@tu-servidor.com

Paso 2: Localiza el archivo de configuración

El archivo de configuración de MySQL suele estar en:

  • /etc/my.cnf
  • /etc/mysql/my.cnf
  • /etc/mysql/mysql.conf.d/mysqld.cnf

Ejecuta:

sudo nano /etc/mysql/my.cnf

Paso 3: Añade o modifica el valor

Busca la sección [mysqld] y añade o modifica esta línea:

[mysqld]
max_connections = 200

El valor 200 es un buen punto de partida para sitios medianos. Si tienes mucho tráfico, puedes subirlo a 500, pero cuidado con la memoria RAM.

Paso 4: Reinicia el servicio

sudo systemctl restart mysql

O si usas MariaDB:

sudo systemctl restart mariadb

Paso 5: Verifica el cambio

SHOW VARIABLES LIKE 'max_connections';

Debería mostrar el nuevo valor.

[WARNING] Aumentar max_connections consume más memoria RAM. Cada conexión puede usar entre 1MB y 5MB. Si tu servidor tiene poca RAM, subir el límite puede provocar caídas por falta de memoria. Ve con cuidado y monitoriza.


Solución 2: Identificar y matar procesos que acaparan conexiones

A veces el problema no es el límite, sino procesos zombies que no se cierran. Puedes ver qué está pasando en tiempo real.

Consulta los procesos activos

Dentro de MySQL, ejecuta:

SHOW PROCESSLIST;

Esto te mostrará todas las conexiones activas. Fíjate en la columna Command y Time. Si ves muchos procesos en estado Sleep con tiempos altos, son conexiones que no se están usando.

Mata procesos problemáticos

Si identificas un proceso que lleva mucho tiempo o que no debería estar ahí:

KILL id_del_proceso;

También puedes matar todos los procesos dormidos de golpe:

-- Ver primero los procesos
SELECT id, user, host, db, command, time, state, info 
FROM information_schema.processlist 
WHERE command = 'Sleep' AND time > 300;

Esto lista conexiones dormidas de más de 5 minutos. Luego puedes matarlas con un comando personalizado.

La solución rápida: reiniciar MySQL

Si el error es crítico y no puedes acceder ni a phpMyAdmin, la solución más rápida es reiniciar el servicio MySQL desde SSH:

sudo systemctl restart mysql

Esto libera todas las conexiones, pero ten en cuenta que las consultas en curso se interrumpirán.

[WARNING] Reiniciar MySQL no es una solución definitiva. Si el problema es recurrente, deberás investigar la causa raíz. El reinicio es un parche temporal.


Solución 3: Optimizar tus consultas y aplicaciones

Esta es la solución más sostenible a largo plazo. Reducir el número de conexiones necesarias es mejor que subir el límite infinitamente.

Para WordPress

  1. Instala un plugin de caché: WP Rocket, W3 Total Cache o LiteSpeed Cache. Esto reduce drásticamente las consultas a la base de datos.
  2. Revisa plugins problemáticos: Desactiva plugins uno a uno y observa si el error desaparece.
  3. Usa un plugin de optimización de base de datos: WP-Optimize o Advanced Database Cleaner eliminan datos basura y optimizan tablas.

Para aplicaciones personalizadas

  1. Usa pooling de conexiones: Herramientas como MySQL Proxy o aplicaciones tipo HikariCP (para Java) reutilizan conexiones en lugar de abrir una nueva cada vez.
  2. Cierra conexiones correctamente: Asegúrate de que tu código cierre las conexiones con close() o dispose() después de cada consulta.

Consultas lentas

Activa el log de consultas lentas en MySQL para identificarlas:

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

Luego revisa el archivo /var/log/mysql/slow.log para ver qué consultas tardan más de 2 segundos.


Solución 4: Cambiar el límite desde DirectAdmin (sin SSH)

Si no tienes acceso SSH pero sí acceso a DirectAdmin, puedes intentar modificar el valor desde la interfaz.

Método con phpMyAdmin

  1. Entra en phpMyAdmin desde DirectAdmin.
  2. Ve a la pestaña "Variables" o "Variables del servidor".
  3. Busca max_connections.
  4. Si puedes modificarla, cambia el valor y guarda.

[INFO] En muchos hosting compartidos, phpMyAdmin no te deja modificar esta variable. Si no te aparece la opción de editar, significa que no tienes permisos. En ese caso, contacta con el soporte.

Método con comandos SQL

En phpMyAdmin, ve a la pestaña "SQL" y ejecuta:

SET GLOBAL max_connections = 200;

Este cambio es temporal y se pierde al reiniciar MySQL, pero puede darte un respiro mientras contactas con el soporte.


Solución 5: Contactar con el soporte de tu hosting

Si estás en hosting compartido, la solución más rápida y segura es abrir un ticket de soporte. Explícales que recibes error mysql conexiones y que necesitas aumentar max_connections cpanel o en DirectAdmin.

Qué decir al soporte

  • Indica el error exacto: "Too many connections".
  • Menciona la hora en que aparece (si es recurrente).
  • Pide que aumenten max_connections a un valor razonable (150-200).
  • Pregunta si hay algún límite de recursos que esté causando el problema.

[TIP] Si el soporte no puede aumentar el límite, pregunta si puedes migrar a un plan superior o a un VPS. A veces es la única solución real.


Solución 6: Configurar una conexión persistente en tu aplicación

Otra forma de reducir el número de conexiones simultáneas es usar conexiones persistentes. En lugar de abrir y cerrar una conexión en cada petición, la aplicación reutiliza una conexión existente.

En PHP (WordPress, por ejemplo)

Puedes modificar el archivo wp-config.php para usar conexiones persistentes:

define('DB_HOST', 'localhost:3306');
define('DB_PERSISTENT', true);

[WARNING] Las conexiones persistentes pueden causar problemas si no se gestionan bien. A veces generan más conflictos de los que resuelven. Úsalas solo si sabes lo que haces.


Solución 7: Reducir el tiempo de espera de las conexiones dormidas

Las conexiones en estado Sleep ocupan espacio sin hacer nada. Puedes reducir el tiempo que MySQL espera antes de cerrarlas automáticamente.

Variables a ajustar

wait_timeout = 60
interactive_timeout = 60

Esto hace que las conexiones que lleven 60 segundos sin actividad se cierren automáticamente. En muchos servidores, el valor por defecto es 28800 segundos (8 horas), lo cual es excesivo.

Aplicar el cambio

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

O añádelo al archivo de configuración para que sea permanente.


Prevención: Monitorear y planificar

Una vez resuelto el problema, es importante que tomes medidas para que no vuelva a ocurrir.

1. Monitoriza tus conexiones

Instala herramientas como MySQL Tuner o mysqltuner para analizar el rendimiento:

sudo mysqltuner

2. Configura alertas

Puedes usar herramientas como Nagios, Zabbix o incluso un script simple que te avise por correo cuando el número de conexiones supere un umbral.

3. Escala cuando sea necesario

Si tu sitio crece constantemente, plantéate:

  • Migrar a un VPS con más recursos.
  • Usar una caché externa como Redis o Memcached.
  • Contratar un CDN para reducir la carga en tu servidor.

Preguntas frecuentes (FAQ)

¿El error "Too many connections" borra mis datos?

No. El error solo impide nuevas conexiones. Tus datos están seguros en el disco. Una vez que se liberan conexiones o aumentas el límite, todo vuelve a funcionar.

¿Cuántas conexiones necesito para mi sitio web?

Depende del tráfico. Un sitio pequeño con 50-100 visitas diarias funciona bien con 30-50 conexiones. Un sitio con 1000 visitas simultáneas puede necesitar 150-200.

¿Puedo aumentar max_connections en hosting compartido?

Normalmente no. El hosting compartido es restrictivo por seguridad. Deberás contactar con el soporte o migrar a un plan superior.

¿Qué diferencia hay entre MySQL y MariaDB?

MariaDB es un fork de MySQL, compatible con la mayoría de comandos. La configuración es prácticamente idéntica. Si tu servidor usa MariaDB, los comandos que te he mostrado funcionan igual.

¿El error puede estar causado por un ataque DDoS?

Sí. Un ataque de fuerza bruta o DDoS puede saturar las conexiones. Si sospechas de un ataque, contacta con tu proveedor de hosting inmediatamente.

¿Cómo sé cuántas conexiones tengo activas?

Ejecuta:

SHOW STATUS LIKE 'Threads_connected';

Este valor te dice cuántas conexiones hay activas en ese momento.

¿Puedo configurar un límite por usuario?

Sí, MySQL permite limitar conexiones por usuario:

GRANT CONNECTION LIMIT 20 ON *.* TO 'usuario'@'localhost';

Resumen final: Qué hacer paso a paso

Para que no te pierdas, aquí tienes el plan de acción resumido:

  1. Identifica el problema: Accede a MySQL y ejecuta SHOW PROCESSLIST para ver qué está pasando.
  2. Libera conexiones: Mata procesos zombies o reinicia MySQL si es crítico.
  3. Aumenta max_connections si tienes permisos (SSH o configuración directa).
  4. Optimiza tu aplicación: Reduce consultas, usa caché, cierra conexiones correctamente.
  5. Contacta con el soporte si estás en hosting compartido.
  6. Prevé futuros problemas: Monitoriza, ajusta timeouts y escala tu infraestructura.

El error too many connections mysql es frustrante, pero no es el fin del mundo. Con un poco de paciencia y las herramientas adecuadas, lo resolverás. Y recuerda: si no te sientes seguro con comandos avanzados, siempre puedes pedir ayuda a tu proveedor de hosting. Ellos están para eso.

[TIP] Guarda este artículo en favoritos. Te será útil la próxima vez que veas ese mensaje en pantalla. Y si usas Syspanel (antes conocido como HestiaCP), recuerda que el acceso a este panel se realiza a través del puerto 2106, y la gestión de bases de datos está en la sección "Bases de Datos" del panel principal.

¿Tienes más dudas? Déjalas 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