¿Cómo puedo aumentar las conexiones máximas de mi instancia de Amazon RDS for MySQL?

Última actualización: 27-08-2021

Quiero aumentar la cantidad máxima de conexiones de mi instancia de Amazon Relational Database Service (Amazon RDS) for MySQL. ¿Cómo puedo hacer y cuáles son algunas de las prácticas recomendadas para usar el parámetro max_connections?

Resolución

En Amazon RDS for MySQL, la métrica max_connections monitorea la cantidad máxima establecida de conexiones de cliente simultáneas (permitidas).

El parámetro max_connections se basa, de forma predeterminada, en la siguiente fórmula de Amazon RDS for MySQL (que se calcula a partir del valor de DBInstanceClassMemory):

max_connections = DBInstanceClassMemory/12582880

El valor predeterminado de max_connections depende de la clase de instancia que utiliza la instancia de Amazon RDS. Una clase de instancia de base de datos con más memoria disponible también admite una mayor cantidad de conexiones de base de datos.

Para verificar el valor actual de max_connections, ejecute el siguiente comando después de conectarse a la instancia de Amazon RDS for MySQL:

SHOW GLOBAL VARIABLES LIKE 'max_connections';

Cuando las conexiones de cliente superen el valor de max_connections, recibirá el error “Too many connections” (Demasiadas conexiones).

Los siguientes factores pueden ocasionar que las conexiones de base de datos superen el valor de max_connections:

  • aumento de la cantidad de conexiones cliente/aplicación a la instancia de base de datos debido a un incremento de la carga de trabajo o al bloqueo a niveles de tabla/fila
  • cierre incorrecto de una conexión cliente/aplicación tras finalizar una operación cierre incorrecto de la conexión del servidor que ocasiona que se abra una nueva conexión cliente/aplicación Con el tiempo, estas nuevas conexiones del servidor pueden hacer que la instancia supere el valor de max_connections. Para enumerar todas las conexiones activas de la instancia de base de datos MySQL, utilice el comando SHOW FULL PROCESSLIST.
  • Las conexiones suspendidas (también conocidas como conexiones abiertas inactivas) surgen debido a parámetros de tiempo de espera de conexión más altos (como wait_timeout o interactive_timeout). Si configura un límite de conexión demasiado alto, es posible que esto ocupe más memoria aunque no se utilicen esas conexiones. Como resultado, cuando el servidor de aplicaciones intente abrir todas las conexiones de cliente a la base de datos, es posible que estas conexiones se rechacen. Para concluir una conexión suspendida, utilice la operación mysql.rds_kill.
    Sugerencia: Se recomienda configurar únicamente las conexiones activas necesarias para el rendimiento de la aplicación. También podría considerar la posibilidad de actualizar a una clase de instancia de base de datos de Amazon RDS de mayor tamaño.

Aumento de max_connections_parameter de la instancia de Amazon RDS for MySQL

Puede aumentar la cantidad máxima de conexiones a la instancia de base de datos mediante los métodos siguientes:

  • Amplíe su instancia de base de datos a una clase de instancia de base de datos con más memoria.
    Advertencia: El tiempo de inactividad se produce al modificar una instancia de base de datos de Amazon RDS.
  • Defina un valor mayor para el parámetro max_connections mediante un grupo de parámetros de nivel de instancia personalizado. El aumento del parámetro max_connections no ocasiona ninguna interrupción.
  • Si la instancia de base de datos utiliza un grupo de parámetros predeterminado, cambie el grupo de parámetros a un grupo de parámetros personalizado. Asegúrese de asociar el grupo de parámetros de base de datos personalizado a su instancia de Amazon RDS for MySQL y reinicie la instancia. Una vez que haya asociado el nuevo grupo de parámetros personalizados a la instancia de base de datos, puede modificar el valor del parámetro max_connections.
    Nota: Cambiar el grupo de parámetros puede provocar una interrupción. Para obtener más información, consulte Trabajo con los grupos de parámetros de base de datos.

Para crear un grupo de parámetros personalizado y modificar el parámetro max_connections, consulte How do I modify the values of an Amazon RDS DB parameter group? (¿Cómo modifico los valores de un grupo de parámetros de bases de datos en Amazon RDS?).

Prácticas recomendadas para configurar el parámetro max_connections

Asegúrese de tener en cuenta las siguientes prácticas recomendadas cuando trabaje con el parámetro max_connections de la instancia de base de datos:

  • Los límites de conexión predeterminados se ajustan para los sistemas que utilizan los valores predeterminados para otros consumidores de memoria significativos (como el grupo de búferes). Es una una práctica recomendada escalar verticalmente la clase de instancia, en lugar de cambiar el valor de la clase de instancia. Sin embargo, si las instancias tienen mucha memoria libre, puede cambiar manualmente este parámetro. Si cambia esta configuración de la instancia de base de datos, considere ajustar el límite de conexión para tener en cuenta el aumento o la disminución de la memoria disponible en las instancias de base de datos.
  • Establezca el valor max_connections ligeramente superior a la cantidad máxima de conexiones que espera abrir en cada instancia de base de datos.
  • Si también activó el esquema de rendimiento, preste mucha atención a la configuración del parámetro max_connections. El tamaño de las estructuras de memoria del esquema de rendimiento se ajusta de forma automática en función de las variables de configuración del servidor. Cuanto más alta establezca la variable, más memoria utilizará el esquema de rendimiento. En casos extremos, esto puede ocasionar problemas de memoria insuficiente en tipos de instancias más pequeños, como T2 y T3. Si utiliza el esquema de rendimiento, se recomienda establecer la configuración de max_connections en el valor predeterminado. Si planea aumentar el valor de max_connections de forma significativa (a un valor superior al predeterminado), considere deshabilitar el esquema de rendimiento.
    Nota: Si se habilita la Información sobre rendimiento para una instancia de base de datos de Amazon RDS for MySQL, el esquema de rendimiento también se habilita de forma automática.
  • Al ajustar el parámetro max_connections, asegúrese de revisar también los siguientes parámetros relacionados con la conexión de MySQL:
    wait_timeout: cantidad de segundos que el servidor espera de actividad en una conexión TCP/IP o archivo Unix no interactiva antes de cerrarla.
    interactive_timeout: cantidad de segundos que el servidor espera de actividad en una conexión interactiva antes de cerrarla.
    net_read_timeout: cantidad de segundos que se deben esperar para obtener más datos de una conexión TCP/IP antes de abandonar la lectura.
    net_write_timeout: cantidad de segundos que se deben esperar en las conexiones TCP/IP para escribir un bloque antes de descartar la escritura.
    max_execution_time: tiempo de espera de ejecución de instrucciones SELECT, en milisegundos.
    max_connect_errors: un alojamiento se encuentra bloqueado para que no se produzcan más conexiones si se presentan más que esta cantidad de conexiones interrumpidas.
    max_user_connections: cantidad máxima de conexiones simultáneas permitidas a cualquier cuenta MySQL determinada.

Nota: En este artículo, no se incluyen los valores recomendados para los parámetros enumerados porque estos valores varían según el caso de uso.


¿Le resultó útil este artículo?


¿Necesita asistencia técnica o con la facturación?