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

Cómo solucionar el error 'Too many connections' en MySQL (WordPress y PrestaShop)

Actualizado el 11 de junio de 2026

¡Hola! Si estás leyendo esto, probablemente te has encontrado con un mensaje de error bastante molesto en tu web: "Too many connections" (o en español, "demasiadas conexiones"). No te preocupes, es uno de los errores más comunes en bases de datos MySQL, y hoy vamos a desgranarlo paso a paso para que lo soluciones tú mismo, tanto si usas WordPress como PrestaShop.

Este error no significa que tu web haya sido hackeada ni que hayas perdido datos. Simplemente indica que tu servidor de base de datos ha alcanzado el límite de conexiones simultáneas permitidas. Es como un ascensor que solo admite 10 personas; si llegan 11, el resto se queda esperando fuera. Vamos a ver cómo ampliar ese "aforo" o, mejor aún, cómo optimizar tu web para que no necesite tantas conexiones a la vez.

¿Qué significa exactamente "Too many connections" en MySQL?

Para entenderlo, imagina que tu web (WordPress o PrestaShop) necesita hablar con la base de datos para mostrar entradas, productos, usuarios, etc. Cada una de esas "conversaciones" abre una conexión. MySQL tiene un límite máximo de conexiones simultáneas que puede gestionar, definido por un parámetro llamado max_connections.

Cuando tu web recibe mucho tráfico, o hay un plugin mal configurado, o simplemente el servidor es pequeño, se pueden abrir más conexiones de las permitidas. Cuando eso pasa, MySQL responde con el error too many connections mysql.

Este problema es especialmente común en entornos de hosting compartido, donde el límite suele ser bajo (por ejemplo, 30 o 50 conexiones). En un VPS o servidor dedicado, el límite suele ser más alto, pero aun así puede agotarse.

¿Cómo saber si tienes este error?

El mensaje puede aparecer en diferentes lugares:

  • En la pantalla de tu web (a veces en blanco o con un mensaje de error).
  • En el panel de administración de WordPress o PrestaShop.
  • En el archivo de registro de errores de tu servidor.
  • Si usas phpMyAdmin, verás el error directamente al intentar acceder.

El error típico es: Warning: mysqli::mysqli(): (HY000/1040): Too many connections o simplemente Error: Too many connections.

Causas comunes del error "demasiadas conexiones"

Antes de lanzarnos a la solución, es vital saber por qué ocurre. Las causas más frecuentes son:

  1. Picos de tráfico: Un aumento repentino de visitantes (por ejemplo, por una promoción o un artículo viral) satura el límite.
  2. Consultas lentas: Si hay consultas SQL que tardan mucho en ejecutarse, las conexiones quedan "ocupadas" durante más tiempo, bloqueando nuevas peticiones.
  3. Plugins o módulos mal optimizados: En WordPress, un plugin de caché mal configurado o un plugin de estadísticas que hace consultas constantes pueden agotar el límite. En PrestaShop, módulos de búsqueda o de sincronización pueden causar el mismo problema.
  4. Conexiones que no se cierran: A veces, el código de un tema o plugin no cierra correctamente las conexiones a la base de datos, dejándolas "colgadas".
  5. Configuración del servidor: El límite max_connections es demasiado bajo para las necesidades reales de tu web.

Solución 1: Aumentar el límite de max_connections (La solución rápida)

Esta es la solución más directa al error mysql demasiadas conexiones. Consiste en decirle a MySQL que puede aceptar más conexiones simultáneas. Ojo, esto es un parche, no la cura definitiva, pero te sacará del apuro.

1.1. Acceso por SSH (Servidores VPS o Dedicados)

Si tienes acceso a la terminal de tu servidor (algo habitual en VPS), sigue estos pasos:

  1. Conéctate por SSH a tu servidor.
  2. Accede a MySQL con un usuario con permisos de administrador. Normalmente con el usuario root:
    mysql -u root -p
    
    Te pedirá la contraseña de root de MySQL (no la de tu hosting).
  3. Una vez dentro, ejecuta este comando para ver el límite actual:
    SHOW VARIABLES LIKE 'max_connections';
    
  4. Para cambiarlo en caliente (sin reiniciar MySQL), ejecuta:
    SET GLOBAL max_connections = 200;
    
    (Puedes cambiar 200 por el número que necesites).
  5. Sal de MySQL con exit;.

Importante: Este cambio es temporal. Se pierde al reiniciar MySQL o el servidor. Para hacerlo permanente, debes editar el archivo de configuración de MySQL, normalmente /etc/mysql/my.cnf o /etc/my.cnf. Busca la sección [mysqld] y añade o modifica la línea:

max_connections = 200

Luego reinicia MySQL: sudo systemctl restart mysql (o mariadb si usas MariaDB).

1.2. Acceso desde el Panel de Control (cPanel, Plesk, Syspanel)

Si tu hosting tiene un panel de control, la cosa es más fácil. Busca la sección de "MySQL" o "Bases de Datos".

  • En cPanel: Busca la herramienta "MySQL Remote" o "Remote MySQL" (aunque esto es para acceso remoto). Para cambiar el límite, a veces está en la sección de "MySQL® Database Configuration" o en la configuración del servidor, pero no siempre está disponible para el usuario final. Si no lo ves, contacta con tu proveedor.
  • En Syspanel (el panel de control que usamos en HestiaCP, accesible por el puerto 2106): La gestión de MySQL es un poco más interna. No hay una opción directa para cambiar max_connections desde la interfaz de Syspanel. Deberás hacerlo por SSH, como te he explicado antes, o contactar con tu administrador de sistemas. [INFO] Recuerda que el acceso a Syspanel es https://tu-dominio:2106.

[TIP] Si estás en un hosting compartido y no tienes acceso SSH, no podrás cambiar este valor. En ese caso, la solución es contactar con el soporte de tu hosting y pedirles amablemente que aumenten el límite o que te digan cuál es el límite actual.

Solución 2: Optimizar tu web para reducir conexiones (La solución definitiva)

Subir el límite es como poner una venda a una herida. La solución real es que tu web no necesite tantas conexiones a la vez. Aquí es donde entra la optimización.

2.1. Activar la caché de consultas (Query Cache)

Esta es una de las mejores soluciones para el error solucionar too many connections wordpress. La caché de consultas guarda el resultado de las consultas SQL más frecuentes. Así, si 100 personas piden el mismo artículo, MySQL solo realiza la consulta una vez y las otras 99 las sirve desde la caché, liberando conexiones.

  • En WordPress: Usa un plugin de caché como WP Rocket, W3 Total Cache o LiteSpeed Cache. Estos plugins no solo hacen caché de páginas, sino que también optimizan las consultas a la base de datos. Busca la opción de "caché de base de datos" y actívala.
  • En PrestaShop: Ve a Preferencias > Rendimiento y activa la "Caché de plantillas" y, si tienes acceso, la "Caché de consultas de base de datos". Además, asegúrate de tener activado el "Modo de depuración" desactivado en producción.

2.2. Optimizar las tablas de la base de datos

Las tablas con muchos datos y fragmentadas hacen que las consultas sean más lentas, ocupando conexiones durante más tiempo. Es como buscar una aguja en un pajar.

  • Desde phpMyAdmin: Selecciona tu base de datos, marca todas las tablas y en el desplegable inferior elige "Optimizar tablas". Esto puede tardar unos segundos, pero es muy efectivo.
  • Desde WordPress con un plugin: Puedes usar plugins como WP-Optimize o Advanced Database Cleaner para limpiar y optimizar la base de datos de forma periódica.
  • Desde PrestaShop: Ve a Parámetros avanzados > Base de datos y podrás ver el estado de las tablas. Algunas versiones permiten optimizarlas directamente desde ahí.

2.3. Revisar plugins y módulos

Muchas veces, el culpable es un plugin o módulo específico que está haciendo demasiadas consultas.

  • WordPress: Ve a Plugins > Plugins instalados. Desactiva todos los plugins y ve activándolos uno a uno. Después de activar cada uno, vigila el rendimiento de tu web o el número de conexiones en el servidor. Si al activar uno aparece el error, ya has encontrado al culpable.
  • PrestaShop: Ve a Módulos > Módulos y servicios y haz lo mismo. Presta especial atención a los módulos de análisis, sincronización de precios o feeds de productos.

[WARNING] No desactives todos los plugins a la vez en una web en producción sin un plan, podrías perder funcionalidades críticas. Hazlo con cuidado y preferiblemente en horas de bajo tráfico.

2.4. Configurar correctamente la caché de objetos (Redis o Memcached)

Esta es una solución más avanzada, pero muy potente. La caché de objetos guarda en memoria (RAM) los resultados de las consultas a la base de datos, de modo que no se vuelve a consultar la base de datos para cada petición.

  • WordPress: Puedes instalar un plugin como Redis Object Cache o Memcached. Requiere que tu servidor tenga Redis o Memcached instalado. Si tu hosting lo ofrece, actívalo.
  • PrestaShop: PrestaShop 1.7 y 8.x tienen soporte nativo para caché de objetos. Ve a Parámetros avanzados > Rendimiento y activa la "Caché de objetos" seleccionando Memcached o Redis.

Solución 3: Soluciones específicas para PrestaShop

El error prestashop too many connections tiene algunos matices. PrestaShop es una plataforma muy "pesada" en cuanto a consultas a la base de datos, especialmente en catálogos grandes.

3.1. Reducir el número de productos por página

Cuanto más productos cargues en una página, más consultas se necesitan. Ve a Parámetros avanzados > Rendimiento y reduce el número de productos que se muestran por página.

3.2. Desactivar las estadísticas internas

Las estadísticas internas de PrestaShop son muy agresivas con la base de datos. Ve a Parámetros avanzados > Estadísticas y desactiva el "Módulo de estadísticas" si no lo usas, o al menos configúralo para que no registre cada visita.

3.3. Usar la combinación de caché

PrestaShop tiene un sistema de caché combinado. Ve a Parámetros avanzados > Rendimiento y activa la "Caché de combinar, comprimir y cachear" para archivos CSS y JavaScript. Esto reduce las peticiones al servidor, aunque no directamente a la base de datos, pero libera recursos generales.

Solución 4: Ajustes en el servidor (Para valientes)

Si tienes un VPS y los pasos anteriores no son suficientes, puedes ajustar otros parámetros de MySQL.

4.1. Aumentar wait_timeout y max_connections

El parámetro wait_timeout es el tiempo que MySQL espera antes de cerrar una conexión inactiva. Si es muy alto, las conexiones se quedan "dormidas" durante mucho tiempo. Reducirlo libera conexiones más rápido.

SET GLOBAL wait_timeout = 60; -- Cierra conexiones inactivas después de 60 segundos
SET GLOBAL max_connections = 150; -- Aumenta el límite

Estos valores también deben hacerse permanentes en el archivo de configuración.

4.2. Usar MariaDB en lugar de MySQL

En muchos sistemas, MariaDB es un reemplazo directo de MySQL y es conocido por gestionar mejor las conexiones concurrentes. Si tu servidor no lo usa, considera migrar (siempre con una copia de seguridad y, preferiblemente, con ayuda de un profesional).

Preguntas Frecuentes (FAQ)

¿Es peligroso aumentar max_connections a un número muy alto?

Sí, puede serlo. Cada conexión consume memoria RAM. Si pones un límite de 5000 en un servidor con 2GB de RAM, lo más probable es que el servidor se quede sin memoria y se caiga. Aumenta el límite con moderación y vigila el uso de memoria.

¿Cuál es el límite recomendado de max_connections?

Depende de la memoria RAM de tu servidor. Una regla general es multiplicar la RAM (en GB) por 100. Por ejemplo, para 4GB de RAM, un límite de 400 es razonable. Pero esto es orientativo.

¿Por qué me sigue dando el error si he aumentado el límite?

Porque el problema de fondo no era el límite, sino que tu web está haciendo demasiadas consultas. Si aumentas el límite, solo estás retrasando el problema. La solución real es la optimización (caché, plugins, etc.) que hemos visto en la Solución 2.

¿Cómo puedo ver cuántas conexiones hay activas en MySQL?

Desde la terminal de MySQL, ejecuta:

SHOW PROCESSLIST;

Esto te mostrará todas las conexiones activas. Si ves muchas con el estado Sleep, significa que hay conexiones inactivas consumiendo recursos.

¿Qué hago si no tengo acceso SSH?

Contacta con tu proveedor de hosting. Es su responsabilidad ayudarte a resolver errores del servidor. Explícales que tienes el error too many connections mysql y pídeles que aumenten el límite o que te ayuden a optimizar la configuración.

Conclusión: Resumen de pasos para solucionar el error

  1. Identifica el error: Confirma que es un error de MySQL y no de otra cosa.
  2. Aumenta el límite temporalmente: Usa SET GLOBAL max_connections = 200; para salir del apuro.
  3. Haz el cambio permanente: Edita el archivo de configuración de MySQL.
  4. Activa la caché: Instala un plugin de caché (WP Rocket, W3TC, etc.) o activa la caché de PrestaShop.
  5. Optimiza tu base de datos: Usa phpMyAdmin o plugins para limpiar y optimizar las tablas.
  6. Revisa plugins/módulos: Desactiva los que no uses y busca los que causan problemas.
  7. Si nada funciona, contacta con tu hosting: Ellos tienen las herramientas para ajustar el servidor.

El error "Too many connections" es un aviso de que tu web necesita una puesta a punto. No es el fin del mundo. Con paciencia y siguiendo estos pasos, podrás dejar tu WordPress o PrestaShop funcionando como un reloj suizo y sin errores de conexión. ¡Mucho ánimo y a por ello!

[INFO] Si tienes más dudas, déjalas en los comentarios y estaremos encantados de ayudarte a resolver el error mysql demasiadas conexiones.

¿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