Considérations relatives à la connexion RDS Proxy - Amazon Relational Database Service

Considérations relatives à la connexion RDS Proxy

Configuration des paramètres de connexion

Pour ajuster le regroupement de connexion RDS Proxy, vous pouvez modifier les paramètres suivants :

IdleClientTimeout

Vous pouvez spécifier la durée d’inactivité d’une connexion client avant que le proxy puisse la fermer. La valeur par défaut est de 1 800 secondes (30 minutes).

Une connexion client est considérée comme inactive lorsque l'application ne soumet aucune nouvelle demande dans le délai défini après l'achèvement de la demande précédente. La connexion à la base de données sous-jacente reste ouverte et est renvoyée au regroupement de connexions. Ainsi, elle peut être réutilisée pour de nouvelles connexions client. Réduisez le délai d’expiration de la connexion client inactive si vous souhaitez que le proxy supprime proactivement les connexions obsolètes. Si votre charge de travail se connecte régulièrement au proxy, augmentez le délai d’expiration de la connexion client inactive pour économiser le coût d’établissement de connexions.

Ce paramètre est représenté par le champ Idle client connection timeout (Délai d'inactivité de la connexion client) dans la console RDS et le paramètre IdleClientTimeout dans l'AWS CLI et l'API. Pour savoir comment modifier la valeur du champ Idle client connection timeout (Délai d’inactivité de la connexion client) dans la console RDS, consultez AWS Management Console. Pour apprendre à modifier la valeur du paramètre IdleClientTimeout, utilisez la commande de la CLI modify-db-proxy ou l'opération d'API ModifyDBProxy.

MaxConnectionsPercent

Vous pouvez limiter le nombre de connexions qu'un RDS Proxy peut établir avec la base de données cible. Vous indiquez la limite, sous forme de pourcentage, des connexions maximales disponibles pour votre base de données. Ce paramètre est représenté par le champ Connection pool maximum connections (Connexions maximales du groupe de connexion) dans la console RDS et le paramètre MaxConnectionsPercent dans l'AWS CLI et l'API.

La valeur MaxConnectionsPercent est exprimée en pourcentage du paramètre max_connections pour l'instance de base de données RDS utilisé par le groupe cible. Le proxy ne crée pas toutes ces connexions à l'avance. Ce paramètre permet au proxy d’établir ces connexions, car la charge de travail en a besoin.

Par exemple, pour une cible de base de données enregistrée avec max_connections définies sur 1 000 et MaxConnectionsPercent défini sur 95, RDS Proxy définit 950 connexions comme la limite supérieure pour les connexions simultanées à cette cible de base de données.

Le fait que votre charge de travail atteigne le nombre maximum de connexions à la base de données autorisées a souvent pour effet secondaire d'augmenter la latence globale des requêtes, ainsi que d'augmenter la métrique DatabaseConnectionsBorrowLatency. Vous pouvez surveiller les connexions à la base de données actuellement utilisées et le nombre total de connexions autorisées en comparant les métriques DatabaseConnections et MaxDatabaseConnectionsAllowed.

Pour définir ce paramètre, tenez compte des bonnes pratiques suivantes :

  • Prévoyez une marge de connexion suffisante pour les modifications du modèle de la charge de travail. Il est recommandé de définir le paramètre afin qu'il soit au moins 30 % supérieur à votre utilisation surveillée maximale récente. Comme RDS Proxy redistribue les quotas de connexion à la base de données entre plusieurs nœuds, les modifications de la capacité interne peuvent nécessiter une marge d'au moins 30 % pour les connexions supplémentaires afin d'éviter des latences d'emprunt plus importantes.

  • RDS Proxy réserve un certain nombre de connexions pour une surveillance active afin de permettre un basculement rapide, le routage du trafic et les opérations internes. La métrique MaxDatabaseConnectionsAllowed n'inclut pas ces connexions réservées. Elle représente le nombre de connexions disponibles pour répondre à la charge de travail et peut être inférieure à la valeur dérivée du paramètre MaxConnectionsPercent.

    Valeurs MaxConnectionsPercent minimales recommandées

    • db.t3.small : 30

    • db.t3.medium ou supérieur : 20

Pour savoir comment modifier la valeur du champ Connection pool maximum connections (Connexions maximales au groupe de connexion) dans la console RDS, consultez AWS Management Console. Pour apprendre à modifier la valeur du paramètre MaxConnectionsPercent, utilisez la commande de la CLI modify-db-proxy-target-group ou l'opération d'API ModifyDBProxyTargetGroup.

Pour en savoir plus sur les limites de connexion aux bases de données, consultez Nombre maximal de connexions aux bases de données.

MaxIdleConnectionsPercent

Vous pouvez contrôler le nombre de connexions aux bases de données inactives que RDS Proxy peut conserver dans le groupe de connexion. Par défaut, RDS Proxy considère qu’une connexion à une base de données dans son groupe est inactive lorsqu’il n’y a pas eu d’activité sur la connexion pendant cinq minutes.

La valeur MaxIdleConnectionsPercent est exprimée en pourcentage du paramètre max_connections du groupe de cibles de l’instance de base de données RDS. La valeur par défaut est de 50 % de MaxConnectionsPercent et la limite supérieure est la valeur de MaxConnectionsPercent. Par exemple, si MaxConnectionsPercent est défini sur 80, la valeur par défaut de MaxIdleConnectionsPercent est 40. Si la valeur de MaxConnectionsPercent n’est pas spécifiée, alors pour RDS for SQL Server, MaxIdleConnectionsPercent est défini sur 5 et pour tous les autres moteurs, la valeur par défaut est 50.

Une valeur élevée permet au proxy de laisser ouvert un pourcentage élevé de connexions inactives à la base de données. Avec une valeur faible, le proxy ferme un pourcentage élevé de connexions de base de données inactives. Si vos charges de travail sont imprévisibles, pensez à définir une valeur élevée pour MaxIdleConnectionsPercent. Cela signifie que RDS Proxy peut prendre en charge les vagues d'activité sans ouvrir de nombreuses nouvelles connexions aux bases de données.

Ce paramètre est représenté par le paramètre MaxIdleConnectionsPercent du DBProxyTargetGroup dans l'AWS CLI et l'API. Pour apprendre à modifier la valeur du paramètre MaxIdleConnectionsPercent, utilisez la commande de la CLI modify-db-proxy-target-group ou l'opération d'API ModifyDBProxyTargetGroup.

Pour en savoir plus sur les limites de connexion aux bases de données, consultez Nombre maximal de connexions aux bases de données.

ConnectionBorrowTimeout

Vous pouvez choisir combien de temps le RDS Proxy doit attendre la disponibilité d'utilisation d'une connexion à une base de données dans le groupe de connexion avant de renvoyer une erreur de dépassement de délai d'attente. La durée par défaut est de 120 secondes. Ce paramètre s'applique lorsque le nombre maximal de connexions est atteint et qu'aucune connexion n'est disponible dans le groupe de connexion. Il s’applique également si aucune instance de base de données appropriée n’est disponible pour traiter la requête en raison, par exemple, d’une opération de basculement en cours. À l’aide de ce paramètre, vous pouvez définir la meilleure période d’attente pour votre application sans avoir à modifier le délai d’attente de requête dans votre code d’application.

Ce paramètre est représenté par le champ Connection borrow timeout (Délai d'expiration d'emprunt de connexion) dans la console RDS ou le paramètre ConnectionBorrowTimeout du DBProxyTargetGroup dans l'AWS CLI ou l'API. Pour savoir comment modifier la valeur du champ Connection borrow timeout (Délai d’expiration d’emprunt de connexion) dans la console RDS, consultez AWS Management Console. Pour apprendre à modifier la valeur du paramètre ConnectionBorrowTimeout, utilisez la commande de la CLI modify-db-proxy-target-group ou l'opération d'API ModifyDBProxyTargetGroup.

Connexions client et connexions aux bases de données

Les connexions entre votre application et RDS Proxy sont appelées connexions client. Les connexions d'un proxy à la base de données sont appelées connexions à la base de données. Lorsque vous utilisez RDS Proxy, les connexions client s'arrêtent au niveau du proxy tandis que les connexions à la base de données sont gérées au sein de RDS Proxy.

Le regroupement des connexions côté application peut offrir l’avantage de réduire l’établissement de connexions récurrentes entre votre application et RDS Proxy.

Tenez compte des aspects de configuration suivants avant d’implémenter un regroupement de connexions côté application :

  • Durée de vie maximale d’une connexion client : RDS Proxy impose une durée de vie maximale de 24 heures aux connexions client. Cette valeur n'est pas configurable. Configurez votre regroupement avec une durée de vie maximale inférieure à 24 heures afin d’éviter des interruptions inattendues de la connexion client.

  • Délai d’inactivité de la connexion client : RDS Proxy impose une durée d’inactivité maximale pour les connexions client. Configurez votre regroupement avec un délai d'inactivité inférieur au délai d'inactivité de votre connexion client pour RDS Proxy afin d'éviter les interruptions de connexion inattendues.

Le nombre maximal de connexions client configurées dans votre regroupement de connexions côté application ne doit pas nécessairement être limité au paramètre max_connections pour RDS Proxy.

Le regroupement des connexions client prolonge leur durée de vie. Si vos connexions sont épinglées, le regroupement des connexions client peut réduire l'efficacité du multiplexage. Les connexions client épinglées mais inactives dans le regroupement de connexions côté application continuent de conserver une connexion à la base de données et empêchent la réutilisation de cette connexion par d’autres connexions client. Consultez les journaux de votre proxy pour vérifier si vos connexions sont épinglées.

Note

RDS Proxy ferme les connexions à la base de données après 24 heures lorsqu'elles ne sont plus utilisées. Le proxy effectue cette action indépendamment de la valeur du paramètre de connexions inactives maximum.