# Cómo modificar y aumentar el número máximo de conexiones en MySQL

- Link: https://binariocero.com/mysql/como-modificar-y-aumentar-el-numero-maximo-de-conexiones-en-mysql
- Published: 2026-09-16T20:06:20+02:00
- Author: Juan José Fernández Durán

![Loading](https://binariocero.com/wp-content/plugins/page-views-count/ajax-loader-
2x.gif)

Cuando una aplicación utiliza MySQL con muchos usuarios simultáneos, puede llegar
un momento en el que el servidor alcance el número máximo de conexiones permitidas.
Cuando esto ocurre, MySQL puede devolver errores como:

    ```wp-block-code
    ERROR 1040 (HY000): Too many connections
    ```

Este problema significa que MySQL ha alcanzado el límite establecido para el número
de conexiones simultáneas.

En este artículo veremos cómo **consultar el límite actual, modificarlo temporalmente
y establecer un valor permanente** en MySQL.

## 1. Comprobar el número máximo de conexiones configurado

Lo primero es comprobar cuál es el valor actual de `max_connections`.

Podemos hacerlo desde MySQL ejecutando:

    ```wp-block-code
    SHOW VARIABLES LIKE 'max_connections';
    ```

El resultado será similar a:

    ```wp-block-code
    +-----------------+-------+
    | Variable_name   | Value |
    +-----------------+-------+
    | max_connections | 151   |
    +-----------------+-------+
    ```

En este ejemplo, MySQL permite hasta **151 conexiones simultáneas**.

## 2. Consultar cuántas conexiones se están utilizando

También es importante saber cuántas conexiones se están utilizando actualmente.

Para consultar el número actual:

    ```wp-block-code
    SHOW STATUS LIKE 'Threads_connected';
    ```

Por ejemplo:

    ```wp-block-code
    +-------------------+-------+
    | Variable_name     | Value |
    +-------------------+-------+
    | Threads_connected | 37    |
    +-------------------+-------+
    ```

Esto indica que en ese momento hay 37 conexiones abiertas.

También podemos consultar el máximo de conexiones que se ha alcanzado desde el último
arranque del servidor:

    ```wp-block-code
    SHOW STATUS LIKE 'Max_used_connections';
    ```

Este dato es especialmente útil para determinar si realmente necesitamos aumentar`
max_connections`.

Por ejemplo:

    ```wp-block-code
    +----------------------+-------+
    | Variable_name        | Value |
    +----------------------+-------+
    | Max_used_connections | 148   |
    +----------------------+-------+
    ```

Si tenemos configurado:

    ```wp-block-code
    max_connections = 151
    ```

y hemos llegado a:

    ```wp-block-code
    Max_used_connections = 148
    ```

significa que el servidor ha estado muy cerca de alcanzar el límite.

# 3. Modificar `max_connections` temporalmente

MySQL permite modificar determinados parámetros dinámicamente sin reiniciar el servidor.

Para aumentar el número máximo de conexiones podemos utilizar:

    ```wp-block-code
    SET GLOBAL max_connections = 300;
    ```

Después podemos comprobar el nuevo valor:

    ```wp-block-code
    SHOW VARIABLES LIKE 'max_connections';
    ```

Deberíamos obtener:

    ```wp-block-code
    +-----------------+-------+
    | Variable_name   | Value |
    +-----------------+-------+
    | max_connections | 300   |
    +-----------------+-------+
    ```

### Importante

Esta modificación es **temporal**.

Si reiniciamos MySQL, el servidor volverá al valor establecido en su archivo de 
configuración.

Por este motivo, si queremos que el cambio permanezca después de un reinicio, debemos
modificar la configuración permanente de MySQL.

# 4. Modificar `max_connections` permanentemente

En sistemas Linux, la configuración de MySQL suele encontrarse en archivos dentro
de:

    ```wp-block-code
    /etc/mysql/
    ```

En instalaciones de MySQL es habitual encontrar archivos de configuración como:

    ```wp-block-code
    /etc/mysql/mysql.conf.d/mysqld.cnf
    ```

Podemos editarlo con:

    ```wp-block-code
    sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
    ```

Dentro de la sección:

    ```wp-block-code
    [mysqld]
    ```

añadimos o modificamos:

    ```wp-block-code
    max_connections = 300
    ```

Por ejemplo:

    ```wp-block-code
    [mysqld]
    max_connections = 300
    ```

Guardamos el archivo y reiniciamos MySQL:

    ```wp-block-code
    sudo systemctl restart mysql
    ```

Posteriormente podemos comprobar que el valor se ha aplicado:

    ```wp-block-code
    sudo systemctl status mysql
    ```

Y desde MySQL:

    ```wp-block-code
    SHOW VARIABLES LIKE 'max_connections';
    ```

# 5. No conviene aumentar `max_connections` sin analizar el servidor

Aumentar el número máximo de conexiones no siempre soluciona el problema de fondo.

Cada conexión de MySQL consume recursos del servidor, especialmente **memoria RAM**.

Por este motivo, pasar directamente de:

    ```wp-block-code
    151
    ```

a:

    ```wp-block-code
    1000
    ```

sin analizar el servidor puede provocar un consumo excesivo de memoria e incluso
hacer que el sistema empiece a utilizar la memoria virtual o termine teniendo problemas
de rendimiento.

Antes de aumentar considerablemente el valor conviene comprobar:

 * Memoria RAM disponible.
 * Número de conexiones actuales.
 * Número máximo de conexiones alcanzadas.
 * Consultas que permanecen abiertas.
 * Tiempo de vida de las conexiones.
 * Configuración del pool de conexiones de la aplicación.
 * Número de aplicaciones que utilizan MySQL.

# 6. Comprobar las conexiones abiertas

Podemos obtener información sobre las conexiones actuales utilizando:

    ```wp-block-code
    SHOW PROCESSLIST;
    ```

Si queremos obtener información más completa:

    ```wp-block-code
    SHOW FULL PROCESSLIST;
    ```

También podemos utilizar:

    ```wp-block-code
    SELECT *
    FROM information_schema.PROCESSLIST;
    ```

Esto permite identificar qué usuarios están conectados, desde qué dirección, qué
están ejecutando y cuánto tiempo llevan conectados.

Por ejemplo:

    ```wp-block-code
    Id     User       Host              db       Command   Time
    12     aplicacion 192.168.21.3      empresa  Sleep     35
    15     aplicacion 192.168.21.3      empresa  Query     2
    18     aplicacion 192.168.21.4      empresa  Sleep     120
    ```

Las conexiones que aparecen continuamente en estado `Sleep` pueden ser normales 
si la aplicación utiliza un pool de conexiones, pero un número excesivo puede indicar
una configuración incorrecta de la aplicación.

# 7. Consultar las conexiones por usuario

También puede ser interesante comprobar qué usuarios están generando más conexiones.

Por ejemplo:

    ```wp-block-code
    SELECT USER, HOST, COUNT(*) AS conexiones
    FROM information_schema.PROCESSLIST
    GROUP BY USER, HOST
    ORDER BY conexiones DESC;
    ```

Esto nos permite detectar si un determinado usuario o aplicación está consumiendo
una cantidad elevada de conexiones.

# 8. Revisar `max_user_connections`

Además de `max_connections`, MySQL dispone de otro parámetro importante:

    ```wp-block-code
    max_user_connections
    ```

Este parámetro limita el número de conexiones simultáneas que puede utilizar un 
usuario concreto.

Podemos comprobar su valor con:

    ```wp-block-code
    SHOW VARIABLES LIKE 'max_user_connections';
    ```

Si devuelve:

    ```wp-block-code
    0
    ```

significa que no se ha establecido un límite global específico para las conexiones
por usuario.

También podemos establecer un límite para un usuario concreto:

    ```wp-block-code
    ALTER USER 'usuario'@'192.168.21.3'
    WITH MAX_USER_CONNECTIONS 50;
    ```

En este ejemplo, el usuario podrá tener como máximo 50 conexiones simultáneas.

Esto puede ser útil cuando tenemos varias aplicaciones compartiendo el mismo servidor
MySQL y queremos evitar que una sola aplicación consuma todas las conexiones disponibles.

# 9. Diferencia entre `max_connections` y `max_user_connections`

Es importante no confundir ambos parámetros.

### `max_connections`

Define el número máximo de conexiones simultáneas que puede aceptar el servidor 
MySQL.

Por ejemplo:

    ```wp-block-code
    max_connections = 300
    ```

Significa que MySQL puede aceptar hasta 300 conexiones simultáneas.

### `max_user_connections`

Limita las conexiones simultáneas de un usuario concreto.

Por ejemplo:

    ```wp-block-code
    ALTER USER 'app'@'192.168.21.3'
    WITH MAX_USER_CONNECTIONS 50;
    ```

En este caso, el usuario `app` no podrá superar las 50 conexiones simultáneas, aunque
el servidor permita 300.

# 10. Comprobar si estamos alcanzando el límite

Una de las comprobaciones más útiles es:

    ```wp-block-code
    SHOW STATUS LIKE 'Max_used_connections';
    ```

También podemos consultar:

    ```wp-block-code
    SHOW STATUS LIKE 'Threads_connected';
    ```

Los dos valores tienen significados diferentes:

| Variable | Significado | 
| `Threads_connected` | Conexiones abiertas actualmente | 
| `Max_used_connections` | Máximo de conexiones simultáneas alcanzado | 
| `max_connections` | Límite máximo configurado |

Por ejemplo:

    ```wp-block-code
    Threads_connected     = 80
    Max_used_connections  = 295
    max_connections       = 300
    ```

Esto indicaría que actualmente hay 80 conexiones, pero anteriormente el servidor
llegó a 295.

En este caso sería recomendable investigar qué provocó ese pico antes de aumentar
todavía más el límite.

# 11. Consultar los intentos rechazados por exceso de conexiones

MySQL dispone también de la variable:

    ```wp-block-code
    SHOW STATUS LIKE 'Connection_errors_max_connections';
    ```

Si obtenemos un valor superior a cero, significa que se han producido intentos de
conexión rechazados porque se había alcanzado el límite máximo.

Por ejemplo:

    ```wp-block-code
    +----------------------------------+-------+
    | Variable_name                    | Value |
    +----------------------------------+-------+
    | Connection_errors_max_connections| 27    |
    +----------------------------------+-------+
    ```

Esto indica que se produjeron 27 errores relacionados con haber alcanzado el máximo
de conexiones.

Es un dato muy útil para determinar si el límite está siendo realmente un problema.

# 12. ¿Qué valor debemos configurar?

No existe un valor universal que sirva para todos los servidores.

Un servidor pequeño puede funcionar correctamente con:

    ```wp-block-code
    max_connections = 150
    ```

Mientras que un servidor dedicado a una aplicación con muchos usuarios puede necesitar:

    ```wp-block-code
    max_connections = 300
    ```

o incluso más.

Sin embargo, el valor debe determinarse teniendo en cuenta los recursos disponibles
y la configuración de MySQL y de las aplicaciones.

Es preferible aumentar el límite progresivamente y monitorizar el consumo de recursos.

Por ejemplo:

    ```wp-block-code
    151 → 200 → 300 → 400
    ```

en lugar de establecer directamente un valor extremadamente elevado.

# 13. Un problema de conexiones no siempre se soluciona aumentando `max_connections`

Si el servidor alcanza constantemente el límite de conexiones, conviene investigar
también la aplicación.

Algunas causas habituales son:

 * Conexiones que no se cierran correctamente.
 * Un pool de conexiones mal configurado.
 * Consultas demasiado lentas.
 * Transacciones que permanecen abiertas.
 * Aplicaciones que crean una conexión nueva para cada operación.
 * Procesos que mantienen conexiones inactivas durante demasiado tiempo.
 * Un número excesivo de procesos de la aplicación.

Por ejemplo, si una aplicación abre cientos de conexiones y las mantiene abiertas
innecesariamente, aumentar `max_connections` puede ocultar temporalmente el problema,
pero no solucionarlo.

# 14. Comprobar la configuración desde la consola

Una comprobación rápida puede hacerse ejecutando:

    ```wp-block-code
    SHOW VARIABLES LIKE 'max_connections';
    SHOW STATUS LIKE 'Threads_connected';
    SHOW STATUS LIKE 'Max_used_connections';
    SHOW STATUS LIKE 'Connection_errors_max_connections';
    ```

Una posible situación sería:

    ```wp-block-code
    max_connections = 300
    Threads_connected = 125
    Max_used_connections = 298
    Connection_errors_max_connections = 15
    ```

En este escenario, el servidor está llegando prácticamente al límite y además ya
se han producido errores por exceso de conexiones.

Antes de aumentar el límite sería recomendable analizar qué está generando ese número
de conexiones.

# 15. Ejemplo de configuración

Supongamos que tenemos un servidor MySQL con suficiente memoria RAM y queremos establecer
un máximo de 300 conexiones.

Editamos:

    ```wp-block-code
    sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
    ```

Y dentro de `[mysqld]`:

    ```wp-block-code
    [mysqld]
    max_connections = 300
    ```

Guardamos los cambios y reiniciamos:

    ```wp-block-code
    sudo systemctl restart mysql
    ```

Comprobamos:

    ```wp-block-code
    mysql -u root -p
    ```

Y posteriormente:

    ```wp-block-code
    SHOW VARIABLES LIKE 'max_connections';
    ```

Si todo es correcto:

    ```wp-block-code
    +-----------------+-------+
    | Variable_name   | Value |
    +-----------------+-------+
    | max_connections | 300   |
    +-----------------+-------+
    ```

# 16. Conclusión

El parámetro `max_connections` permite controlar cuántas conexiones simultáneas 
puede aceptar MySQL.

Para analizar un problema de conexiones conviene revisar al menos:

    ```wp-block-code
    SHOW VARIABLES LIKE 'max_connections';
    SHOW STATUS LIKE 'Threads_connected';
    SHOW STATUS LIKE 'Max_used_connections';
    SHOW STATUS LIKE 'Connection_errors_max_connections';
    ```

Si el servidor está alcanzando el límite, podemos aumentar temporalmente el valor
mediante:

    ```wp-block-code
    SET GLOBAL max_connections = 300;
    ```

Y para hacerlo permanente, establecerlo en la configuración de MySQL:

    ```wp-block-code
    [mysqld]
    max_connections = 300
    ```

Sin embargo, **aumentar** `**max_connections**` **debe hacerse teniendo en cuenta
la memoria RAM y el resto de recursos del servidor**. Un número excesivamente alto
de conexiones puede provocar un consumo elevado de memoria y empeorar el rendimiento.

Por tanto, ante un error `Too many connections`, la solución correcta no consiste
únicamente en aumentar el límite: también debemos comprobar qué aplicación está 
generando las conexiones y si estas se están gestionando correctamente.
