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

Arreglar error 'Too many connections' en MySQL

Actualizado el 12 de octubre de 2025

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

Si estás leyendo esto, es muy probable que hayas visto un mensaje parecido a este en tu web: "Too many connections", o algo como "User already has more than 'max_user_connections' active connections". Este es uno de los errores mysql más comunes y, aunque asusta al principio, tiene solución.

Este error aparece cuando el número de conexiones simultáneas a tu base de datos supera el límite conexiones que tiene configurado el servidor. Piensa en tu base de datos como un restaurante con un número limitado de mesas. Si llegan más clientes que mesas disponibles, el resto tiene que esperar fuera. Si el restaurante está lleno y sigue llegando gente, el maître (MySQL) les dice: "Lo sentimos, no hay sitio". Eso es exactamente lo que significa el error.


¿Por qué ocurre este error?

Hay varias razones por las que puedes estar viendo este mensaje. Las más habituales son:

  • Picos de tráfico repentinos: Tu web recibe más visitas de lo normal y cada visita abre una conexión a la base de datos.
  • Consultas lentas o mal optimizadas: Si una consulta tarda mucho, mantiene la conexión abierta durante más tiempo.
  • Conexiones que no se cierran: Algún plugin, script o aplicación no está cerrando las conexiones correctamente.
  • Configuración del servidor demasiado baja: El valor de max_connections en MySQL es muy bajo para las necesidades de tu web.
  • Ataques de fuerza bruta o bots: Pueden generar cientos de conexiones falsas.
  • Uso de un hosting compartido: En muchos casos, el proveedor limita las conexiones por usuario (a veces a 10 o 15), y si tienes varias aplicaciones, se agotan rápido.

Cómo comprobar el límite actual de conexiones

Antes de arreglar nada, necesitas saber cuál es tu límite. Puedes hacerlo de dos formas:

1. Desde phpMyAdmin (si tu hosting lo tiene)

Accede a tu panel de control (cPanel, Syspanel, etc.) y abre phpMyAdmin. Luego, ve a la pestaña "SQL" y ejecuta esta consulta:

SHOW VARIABLES LIKE 'max_connections';

También puedes ver el límite por usuario:

SHOW VARIABLES LIKE 'max_user_connections';

2. Desde la línea de comandos (SSH)

Si tienes acceso SSH, conéctate a tu servidor y escribe:

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

Te pedirá la contraseña y te mostrará el valor. Si el número es bajo (por ejemplo, 100 o menos) y tu web tiene mucho tráfico, es normal que aparezca el error.


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

Vamos a ver varias soluciones, ordenadas de la más sencilla a la más avanzada. Te recomiendo probarlas en este orden.

1. Reiniciar MySQL (solución temporal)

Si el error es puntual (por ejemplo, un pico de tráfico), reiniciar el servicio de MySQL puede liberar todas las conexiones colgadas.

  • En cPanel: Ve a "Administración de servicios" o usa el administrador de procesos de tu hosting. Busca MySQL y haz clic en "Reiniciar".
  • En Syspanel (HestiaCP): Accede por el puerto 2106 (por ejemplo, https://tu-servidor:2106), ve a la sección de servidores y reinicia el servicio MySQL.
  • Por SSH: Ejecuta sudo systemctl restart mysql (en sistemas con systemd) o sudo service mysql restart.

[INFO] Este método es un parche. Si el error vuelve a aparecer, el problema es más profundo y necesitas aplicar las soluciones siguientes.


2. Identificar qué está consumiendo todas las conexiones

Antes de cambiar nada, es importante saber qué está usando las conexiones. Ejecuta esta consulta en phpMyAdmin o por SSH:

SHOW PROCESSLIST;

Verás una lista de procesos con su estado. Fíjate en:

  • Time: Si hay procesos con un tiempo muy alto (más de 60 segundos), son consultas lentas.
  • State: Si ves muchos procesos en estado "Sleep", son conexiones que están abiertas pero inactivas. Estas son las principales culpables.

[TIP] Si ves muchos procesos en "Sleep", el problema es que alguna aplicación no cierra las conexiones. Revisa los plugins de WordPress, o si usas algún framework, comprueba que esté usando connection pooling.


3. Aumentar el límite de conexiones (max_connections)

Si el límite es demasiado bajo, puedes subirlo. Esto se hace editando el archivo de configuración de MySQL.

Paso 1: Localizar el archivo de configuración

Normalmente se llama my.cnf o my.ini. Las rutas más comunes son:

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

En cPanel, a veces puedes editarlo desde "Configuración de MySQL" en la sección de bases de datos.

Paso 2: Editar el valor

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

max_connections = 500

También puedes ajustar el límite por usuario:

max_user_connections = 200

[WARNING] No subas el valor a números absurdos (como 5000) si tu servidor no tiene suficiente RAM. Cada conexión consume memoria. Una regla rápida es: 50 conexiones por cada 1 GB de RAM. Si tienes 2 GB, 100 conexiones es un buen punto de partida.

Paso 3: Reiniciar MySQL

Guarda los cambios y reinicia el servicio como vimos antes.


4. Optimizar las consultas y cerrar conexiones

Esta solución es más de fondo y evita que el problema vuelva a aparecer.

En WordPress (el caso más común)

Si usas WordPress, instala un plugin de caché como WP Rocket o W3 Total Cache. Esto reduce drásticamente las consultas a la base de datos.

También revisa si tienes plugins que hacen consultas pesadas, como los de estadísticas o los que muestran "productos vistos recientemente". Desactívalos uno a uno y observa si el error desaparece.

En aplicaciones personalizadas

Si tienes una aplicación hecha a medida, asegúrate de que estás cerrando las conexiones con mysqli_close() o su equivalente en tu lenguaje. Si usas PDO, pon la conexión a null al terminar.

[TIP] Si tu aplicación usa PHP, puedes forzar el cierre de conexiones añadiendo mysql_close($conexion); al final de cada script, aunque lo ideal es usar un patrón de conexión única.


5. Usar un gestor de conexiones (Connection Pooling)

Si tu aplicación necesita muchas conexiones, considera usar un pool de conexiones. Esto reutiliza las conexiones existentes en lugar de crear una nueva cada vez.

  • En PHP: Puedes usar PDO con el modo de persistencia (PDO::ATTR_PERSISTENT => true). Esto mantiene la conexión abierta y la reutiliza.
  • En Node.js: Usa la librería mysql2 con su pool integrado.
  • En Python: Usa SQLAlchemy con pool_size configurado.

6. Contactar con tu proveedor de hosting

Si estás en un hosting compartido, es posible que no tengas acceso al archivo de configuración. En ese caso:

  • Contacta con el soporte y explícales el error mysql.
  • Pídeles que aumenten el valor de max_connections o max_user_connections.
  • Si se niegan, considera cambiar a un plan superior o a un VPS.

[WARNING] En hosting compartido, el proveedor limita las conexiones para proteger a otros usuarios. No insistas demasiado si se niegan; es política del servicio.


Cómo prevenir el error en el futuro

Una vez solucionado, toma estas medidas para que no vuelva a aparecer:

1. Monitoriza tu base de datos

Usa herramientas como MySQL Workbench, Percona Monitoring o incluso el monitor de rendimiento de cPanel para ver cuántas conexiones se están usando en tiempo real.

2. Optimiza las tablas

Ejecuta OPTIMIZE TABLE en tus tablas más grandes. Esto reduce el tiempo de consulta y, por tanto, el tiempo que las conexiones están ocupadas.

3. Usa una caché de consultas

Configura la caché de MySQL en tu archivo de configuración:

query_cache_type = 1
query_cache_size = 64M

[INFO] En MySQL 8.0, la caché de consultas fue eliminada. Si usas esta versión, salta este paso y usa una caché a nivel de aplicación (como Redis o Memcached).

4. Revisa los logs

Revisa el log de errores de MySQL (/var/log/mysql/error.log) para ver si hay consultas que fallan repetidamente o intentos de conexión sospechosos.


Preguntas frecuentes (FAQ)

¿Por qué mi hosting dice "Too many connections" si solo tengo una web pequeña?

Es posible que tu web esté haciendo demasiadas consultas por página, o que tengas algún plugin que no cierra conexiones. También puede ser que el límite de tu plan sea muy bajo (por ejemplo, 5 conexiones). Revisa el SHOW PROCESSLIST para ver qué está pasando.

¿Puedo arreglar este error desde cPanel sin acceso SSH?

Sí. En cPanel puedes:

  • Reiniciar MySQL desde "Administración de servicios".
  • Editar max_connections desde "Configuración de MySQL" (si tu plan lo permite).
  • Usar phpMyAdmin para ejecutar SHOW PROCESSLIST y matar procesos con KILL id_proceso.

¿Qué hago si el error aparece solo de madrugada?

Eso sugiere que tienes un cron job que se ejecuta a esa hora y abre muchas conexiones a la vez. Revisa tus tareas programadas en crontab o en el panel de control y espacia las horas de ejecución.

¿Syspanel (HestiaCP) tiene algún ajuste especial para esto?

En Syspanel (que se accede por el puerto 2106), puedes ir a la sección de Bases de Datos y ver el estado de MySQL. No tiene un ajuste directo para max_connections, pero puedes editar el archivo de configuración desde la terminal o pedir ayuda al soporte.

¿Es peligroso subir el límite de conexiones?

Solo si lo subes demasiado y tu servidor no tiene suficiente memoria. Cada conexión consume entre 1 y 5 MB de RAM. Si subes a 1000 y tu servidor tiene 512 MB de RAM, lo más probable es que se caiga.


Resumen rápido

SoluciónCuándo usarlaDificultad
Reiniciar MySQLError puntualBaja
Aumentar max_connectionsLímite bajo en el servidorMedia
Optimizar consultasConsultas lentas o plugins pesadosMedia
Usar pool de conexionesAplicaciones personalizadasAlta
Contactar al hostingHosting compartidoBaja

El error "Too many connections" no es el fin del mundo. Con un poco de paciencia y siguiendo estos pasos, podrás identificarlo y solucionarlo. Recuerda siempre monitorizar tu base de datos y ajustar los valores según las necesidades reales de tu web.

Espero que esta guía te haya sido útil. Si te quedan dudas, déjalas en los comentarios y te ayudaré a resolverlas. ¡Buena suerte con tu base de datos!

¿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