Observaciones sobre la conexión de RDS Proxy - Amazon Relational Database Service

Observaciones sobre la conexión de RDS Proxy

Configuración de los valores de conexión

Para ajustar la agrupación de conexiones de RDS Proxy, puede modificar la siguiente configuración:

IdleClientTimeout

Puede especificar cuánto tiempo puede estar inactiva una conexión del cliente antes de que el proxy la cierre. El valor predeterminado es 1800 segundos (30 minutos).

Una conexión de cliente se considera inactiva cuando la aplicación no envía una nueva solicitud dentro del plazo especificado después de completar la solicitud anterior. La conexión de base de datos subyacente permanece abierta y se devuelve al grupo de conexiones. Por lo tanto, está disponible para reutilizarla para nuevas conexiones de cliente. Si quiere que el proxy elimine de forma proactiva las conexiones obsoletas, considere la posibilidad de reducir el tiempo de espera de conexión del cliente inactivo. Si la carga de trabajo establece conexiones frecuentes con el proxy, considere la posibilidad de aumentar el tiempo de espera de la conexión del cliente inactivo para ahorrar el costo del establecimiento de conexiones.

Esta configuración se representa mediante el campo Idle client connection timeout (Tiempo de espera de la conexión de cliente inactivo) en la consola de RDS y la configuración IdleClientTimeout en la AWS CLI y la API. Para obtener información sobre cómo cambiar el valor del campo Idle client connection timeout (Tiempo de espera de la conexión de cliente inactivo) en la consola de RDS, consulte AWS Management Console. Para obtener información sobre cómo cambiar el valor de la configuración IdleClientTimeout, consulte el comando de la CLI modify-db-proxy o la operación de la API ModifyDBProxy.

MaxConnectionsPercent

Puede limitar el número de conexiones que un proxy de RDS puede establecer con la base de datos de destino. Especifique el límite como porcentaje de las conexiones máximas disponibles para la base de datos. Esta configuración se representa mediante el campo Connection pool maximum connections (Conexiones máximas de grupo de conexión) en la consola de RDS y la configuración MaxConnectionsPercent en la AWS CLI y la API.

El valor MaxConnectionsPercent se expresa como un porcentaje de la configuración de max_connections para la instancia de base de datos de RDS que usa el grupo de destino. El proxy no crea todas estas conexiones por adelantado. Esta configuración permite que el proxy establezca estas conexiones a medida que la carga de trabajo las necesita.

Por ejemplo, en una base de datos registrada donde max_connections está establecido en 1000 y MaxConnectionsPercent está establecido en 95, el proxy de RDS establece 950 conexiones como límite máximo para las conexiones simultáneas a esa base de datos de destino.

Un efecto secundario habitual de que la carga de trabajo alcance el número máximo de conexiones a bases de datos permitidas es el aumento de la latencia general de las consultas, junto con un aumento de la métrica DatabaseConnectionsBorrowLatency. Puede supervisar las conexiones a bases de datos que se utilizan actualmente y el total permitido comparando las métricas DatabaseConnections y MaxDatabaseConnectionsAllowed.

Al configurar este parámetro, tenga en cuenta las siguientes prácticas recomendadas:

  • Deje suficiente margen de conexión para los cambios en el patrón de carga de trabajo. Se recomienda configurar el parámetro al menos un 30 % por encima del uso supervisado máximo reciente. Dado que el proxy de RDS redistribuye las cuotas de conexión a las bases de datos entre varios nodos, los cambios en la capacidad interna pueden requerir al menos un 30 % de margen para conexiones adicionales para evitar un aumento de la latencia de préstamos.

  • El proxy de RDS reserva una cantidad determinada de conexiones para la supervisión activa para facilitar una conmutación por error rápida, el enrutamiento del tráfico y las operaciones internas. La métrica MaxDatabaseConnectionsAllowed no incluye estas conexiones reservadas. Representa el número de conexiones disponibles para atender la carga de trabajo y puede ser inferior al valor derivado de la configuración de MaxConnectionsPercent.

    Valores de MaxConnectionsPercent mínimos recomendados

    • db.t3.small: 30

    • db.t3.medium o superior: 20

Para obtener información sobre cómo cambiar el valor del campo Connection pool maximum connections (Conexiones máximas de grupo de conexión) en la consola de RDS, consulte AWS Management Console. Para obtener información sobre cómo cambiar el valor de la configuración de MaxConnectionsPercent, consulte el comando de la CLI modify-db-proxy-target-group o la operación de la API ModifyDBProxyTargetGroup.

Para obtener información sobre los límites de conexión de base de datos, consulte Número máximo de conexiones de base de datos.

MaxIdleConnectionsPercent

Puede controlar el número de conexiones de base de datos inactivas que RDS Proxy puede mantener en el grupo de conexiones. De forma predeterminada, RDS Proxy considera que una conexión de base de datos en su grupo está inactiva cuando no ha habido actividad en la conexión durante cinco minutos.

El valor MaxIdleConnectionsPercent se expresa como un porcentaje de la configuración de max_connections para el grupo de destino de la instancia de base de datos de RDS. El valor predeterminado es del 50 por ciento de MaxConnectionsPercent y el límite superior es el valor de MaxConnectionsPercent. Por ejemplo, si MaxConnectionsPercent es 80, el valor predeterminado de MaxIdleConnectionsPercent es 40. Si no se especifica el valor de MaxConnectionsPercent, entonces MaxIdleConnectionsPercent es 5 para RDS para SQL Server y, para todos los demás motores, el valor predeterminado es 50.

Con un valor alto, el proxy deja un alto porcentaje de conexiones de base de datos inactivas abiertas. Con un valor bajo, el proxy cierra un alto porcentaje de conexiones de base de datos inactivas. Si sus cargas de trabajo son impredecibles, considere establecer un valor alto para MaxIdleConnectionsPercent. De este modo, RDS Proxy puede adaptarse a los aumentos de actividad sin abrir muchas conexiones de base de datos nuevas.

Esta configuración se representa mediante la configuración MaxIdleConnectionsPercent de DBProxyTargetGroup en la AWS CLI y la API. Para obtener información sobre cómo cambiar el valor de la configuración de MaxIdleConnectionsPercent, consulte el comando de la CLI modify-db-proxy-target-group o la operación de la API ModifyDBProxyTargetGroup.

Para obtener información sobre los límites de conexión de base de datos, consulte Número máximo de conexiones de base de datos.

ConnectionBorrowTimeout

Puede elegir cuánto tiempo espera RDS Proxy a que una conexión a la base de datos del grupo de conexiones esté disponible para su uso antes de devolver un error de tiempo de espera. El valor predeterminado es de 120 segundos. Esta configuración se aplica cuando el número de conexiones está al máximo, por lo que no hay conexiones disponibles en el grupo de conexiones. Esto también se aplica si no hay ninguna instancia de base de datos adecuada disponible para gestionar la solicitud, como cuando se esté realizando una operación de conmutación por error. Con esta configuración, puede establecer el mejor periodo de espera para la aplicación sin cambiar el tiempo de espera de la consulta en el código de la aplicación.

Esta configuración se representa mediante el campo Connection borrow timeout (Tiempo de espera de préstamo de conexión) en la consola de RDS o en la configuración de ConnectionBorrowTimeout de DBProxyTargetGroup de la AWS CLI o de la API. Para obtener información sobre cómo cambiar el valor del campo Connection borrow timeout (Tiempo de espera de préstamo de conexión) en la consola de RDS, consulte AWS Management Console. Para obtener información sobre cómo cambiar el valor de la configuración de ConnectionBorrowTimeout, consulte el comando de la CLI modify-db-proxy-target-group o la operación de la API ModifyDBProxyTargetGroup.

Conexiones de cliente y base de datos

Las conexiones de la aplicación a RDS Proxy se conocen como conexiones de cliente. Las conexiones desde un proxy a la base de datos son conexiones de base de datos. Cuando se utiliza RDS Proxy, las conexiones de cliente terminan en el proxy, mientras que las conexiones de la base de datos se administran en RDS Proxy.

La agrupación de conexiones en la aplicación puede ofrecer la ventaja de reducir el establecimiento de conexiones recurrentes entre la aplicación y RDS Proxy.

Tenga en cuenta los siguientes elementos de configuración antes de implementar un grupo de conexiones en la aplicación:

  • Duración máxima de la conexión del cliente: RDS Proxy impone una vida útil máxima de 24 horas para las conexiones del cliente. Este valor no se puede configurar. Configure su grupo con una vida útil máxima de conexión inferior a 24 horas para evitar caídas inesperadas en la conexión del cliente.

  • Tiempo de espera de inactividad en la conexión de cliente: RDS Proxy impone un tiempo máximo de inactividad para las conexiones del cliente. Configure su grupo con un valor de tiempo de espera de conexión inactiva inferior al tiempo de espera de la conexión de cliente para RDS Proxy, a fin de evitar caídas inesperadas en la conexión.

El número máximo de conexiones del cliente configuradas en el grupo de conexiones de la aplicación no tiene por qué limitarse a la configuración max_connections de RDS Proxy

La agrupación de conexiones de clientes prolonga la vida útil de las conexiones del cliente. Si las conexiones se bloquean, agrupar las conexiones de cliente podría reducir la eficiencia de la multiplexación. Las conexiones del cliente que están bloqueadas pero inactivas en el grupo de conexiones de la aplicación siguen teniendo una conexión de base de datos e impiden que otras conexiones del cliente reutilicen la conexión a la base de datos. Revise los registros de proxy para comprobar si las conexiones se fijan.

nota

RDS Proxy cierra las conexiones de base de datos un poco después de 24 horas, cuando ya no están en uso. El proxy realiza esta acción independientemente del valor de configuración máxima de conexiones inactivas.