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

Cómo solucionar el error 'Too many connections' en bases de datos

Actualizado el 29 de mayo de 2026

¡Hola! Si estás leyendo esto, probablemente te has encontrado con el temido mensaje "Too many connections" en tu base de datos. No te preocupes, es un error muy común y, como veremos, tiene solución. Este error aparece cuando el número de conexiones simultáneas a tu base de datos supera el límite máximo permitido por el servidor. En este artículo, te explicaré paso a paso cómo diagnosticarlo y solucionarlo, tanto si eres un usuario principiante como si tienes algo más de experiencia.

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

Imagina que tu base de datos es un restaurante con un número limitado de mesas. Cada vez que una aplicación web (como WordPress, Joomla o un script personalizado) necesita hablar con la base de datos, pide una mesa (conexión). Si llegan más clientes (conexiones) de los que el restaurante puede atender, el error "Too many connections" aparece. Esto puede deberse a picos de tráfico, aplicaciones mal optimizadas, o simplemente porque el límite por defecto es demasiado bajo.

¿Por qué ocurre este error en MySQL?

MySQL, el gestor de bases de datos más popular, tiene un parámetro llamado max_connections que define el número máximo de conexiones simultáneas. Cuando se supera, el servidor rechaza nuevas conexiones con el mensaje:

[ERROR] "Too many connections"

Las causas más frecuentes son:

  • Picos de tráfico: Muchos visitantes simultáneos en tu web.
  • Aplicaciones mal programadas: Scripts que no cierran correctamente las conexiones.
  • Configuración del servidor: Límite max_connections demasiado bajo para tu tráfico.
  • Ataques DDoS: Intentos maliciosos de saturar el servidor.

Diagnóstico rápido: ¿Cómo saber si tienes este error?

Antes de solucionar, debes confirmar que el error es real. Puedes hacerlo de varias formas:

1. Acceder a la base de datos desde la terminal

Si tienes acceso SSH a tu servidor, ejecuta:

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

Te mostrará el límite actual. Luego, verifica cuántas conexiones hay activas:

mysql -u usuario -p -e "SHOW STATUS LIKE 'Threads_connected';"

Si Threads_connected es igual o muy cercano a max_connections, tienes el error.

2. Usar herramientas de administración

Si usas un panel como Syspanel (antes HestiaCP, accesible por el puerto 2106), puedes revisar los logs de MySQL desde la interfaz gráfica. Busca en la sección de "Logs" o "Base de datos" mensajes como "Too many connections".

[TIP] Syspanel facilita la gestión de bases de datos. Si tienes acceso, ve a la pestaña "Bases de datos" y revisa el estado de MySQL.

3. Desde phpMyAdmin o similar

Si tu hosting tiene phpMyAdmin, inicia sesión y ve a la pestaña "Estado" o "Variables". Busca max_connections y Threads_connected. Si están cerca, es la señal.

Soluciones paso a paso para el error "Too many connections"

Aquí tienes varias soluciones, desde las más sencillas hasta las más avanzadas. Empieza por la primera y avanza si es necesario.

Solución 1: Aumentar el límite de conexiones (la más común)

Esta es la solución más directa. Necesitas editar el archivo de configuración de MySQL (my.cnf o my.ini).

Paso a paso:

  1. Accede al servidor por SSH o a través del panel de control.
  2. Localiza el archivo de configuración: Normalmente está en /etc/mysql/my.cnf o /etc/my.cnf. Si usas Syspanel, puedes editarlo desde la sección "Configuración del servidor" > "MySQL".
  3. Abre el archivo con un editor de texto (nano, vim o el editor del panel).
  4. Busca la línea max_connections = 150 (o similar). Si no existe, agrégala en la sección [mysqld].
  5. Cambia el valor a algo mayor, por ejemplo max_connections = 500. No lo subas demasiado, ya que cada conexión consume memoria RAM. Un valor seguro para un servidor típico es entre 200 y 500.
  6. Guarda el archivo y reinicia MySQL:
sudo systemctl restart mysql

O desde Syspanel: Ve a "Servicios" y haz clic en "Reiniciar" junto a MySQL.

[INFO] Si el archivo no tiene la línea, agrégala así:
[mysqld]
max_connections = 500

Verifica el cambio:

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

Debería mostrar el nuevo valor.

Solución 2: Cerrar conexiones inactivas (solución temporal)

Si no puedes reiniciar el servidor o necesitas una solución rápida, puedes matar conexiones inactivas. Esto libera espacio para nuevas conexiones.

Comando SQL para ver conexiones activas:

SHOW FULL PROCESSLIST;

Identifica las conexiones con estado "Sleep" de larga duración. Luego, mata las que no sean necesarias:

KILL id_de_conexion;

[WARNING] No mates conexiones que estén ejecutando consultas importantes. Solo las inactivas.

Solución 3: Optimizar las aplicaciones que usan la base de datos

A veces el problema no es el límite, sino que las aplicaciones no cierran conexiones correctamente. Esto es común en WordPress con plugins mal optimizados.

Revisa estos puntos:

  • Conexiones persistentes: En PHP, evita mysql_pconnect() (obsoleto) o su equivalente en PDO. Usa conexiones no persistentes.
  • Cierres explícitos: Asegúrate de que tu código cierra la conexión con mysqli_close() o $pdo = null.
  • Timeout de conexión: Configura un tiempo de espera bajo para conexiones inactivas. En MySQL, puedes ajustar wait_timeout e interactive_timeout en my.cnf. Por ejemplo:
[mysqld]
wait_timeout = 60
interactive_timeout = 60

Esto cierra automáticamente conexiones que lleven más de 60 segundos inactivas.

Solución 4: Usar un pool de conexiones (avanzado)

Si tu aplicación soporta muchos usuarios concurrentes, considera usar un pool de conexiones como ProxySQL o MySQL Router. Esto gestiona las conexiones de forma eficiente, reduciendo la carga.

[INFO] Un pool de conexiones reutiliza conexiones existentes en lugar de abrir una nueva cada vez. Es ideal para aplicaciones con mucho tráfico.

Solución 5: Reiniciar el servicio MySQL (último recurso)

Si nada funciona y el servidor está colapsado, un reinicio rápido puede liberar todas las conexiones. Pero ojo: esto desconecta a los usuarios activos.

sudo systemctl restart mysql

O desde Syspanel: Reinicia el servicio MySQL.

[WARNING] Reiniciar MySQL puede causar pérdida de datos si hay transacciones no confirmadas. Úsalo solo en emergencias.

Prevención: Cómo evitar el error en el futuro

Una vez solucionado, toma medidas para que no vuelva a ocurrir.

1. Monitorea el uso de conexiones

Instala herramientas como MySQLTuner o Percona Monitoring and Management. También puedes usar scripts simples:

watch -n 5 "mysql -u usuario -p -e \"SHOW STATUS LIKE 'Threads_connected';\""

2. Ajusta el límite según tu tráfico

Calcula cuántas conexiones necesitas. Por ejemplo, si tu web recibe 100 visitas simultáneas y cada una requiere 2 conexiones, necesitas al menos 200. Añade un margen de seguridad.

3. Optimiza tu aplicación

  • Usa caché (Redis, Memcached) para reducir consultas a la base de datos.
  • Actualiza plugins y temas si usas WordPress.
  • Implementa un CDN para aliviar la carga del servidor.

4. Configura alertas

En Syspanel, puedes configurar alertas por correo cuando el número de conexiones supere un umbral. Ve a "Notificaciones" > "Alertas del sistema" y activa las de MySQL.

Preguntas frecuentes (FAQ)

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

No directamente, pero puede hacer que tu web deje de funcionar. Solucionarlo rápido es clave.

¿Cuántas conexiones son normales?

Depende del servidor. Un sitio pequeño con 50 conexiones es normal; uno grande puede necesitar 500 o más.

¿Puedo aumentar max_connections sin límite?

No. Cada conexión consume RAM. Si pones 1000 en un servidor con 1 GB de RAM, podrías agotar la memoria. Calcula: cada conexión usa ~2-5 MB. Haz la cuenta.

¿Cómo sé si mi hosting permite cambiar max_connections?

En hosting compartido, no podrás. Contacta al soporte. En VPS o dedicado, sí. Si usas Syspanel, tienes control total.

¿Qué hago si no tengo acceso SSH?

Usa phpMyAdmin o el panel de control. También puedes pedir a tu proveedor que aumente el límite.

Conclusión

El error "Too many connections" en MySQL es molesto pero solucionable. Empieza por aumentar max_connections y cierra conexiones inactivas. Luego, optimiza tu aplicación y monitorea el uso. Con estas soluciones, tu base de datos estará estable y tu web funcionando sin problemas.

[TIP] Si usas Syspanel (puerto 2106), todo es más fácil: desde la interfaz gráfica puedes ajustar parámetros, reiniciar servicios y ver logs. Aprovecha esas herramientas.

¿Has solucionado el error? ¡Cuéntame en los comentarios si te funcionó! Y recuerda, la prevención es la mejor estrategia. ¡Hasta la próxima!

¿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