Passer au contenu

Comment surveiller les pools de connexions du proxy RDS Amazon et optimiser les connexions aux bases de données ?

Lecture de 6 minute(s)
0

Je souhaite surveiller les pools de connexions du proxy Amazon Relational Database Services (Amazon RDS) et optimiser mes connexions aux bases de données.

Résolution

Surveiller les métriques pour le proxy RDS et la base de données RDS cible

Procédez comme suit :

  1. Ouvrez la console Amazon CloudWatch.
  2. Dans le volet de navigation, sélectionnez Métriques, puis Toutes les métriques.
  3. Dans l'onglet Parcourir, choisissez RDS, puis choisissez Métriques par proxy.
  4. Recherchez les métriques suivantes :
    ClientConnections pour le nombre de connexions entrantes depuis votre application.
    MaxDatabaseConnectionsAllowed pour le nombre maximum de connexions à la base de données autorisées par le proxy RDS.
    DatabaseConnections pour le nombre actuel de connexions que le proxy RDS établit à la base de données cible.
  5. Dans l'onglet Parcourir, choisissez RDS, puis DBInstanceIdentifier.
  6. Recherchez la métrique DatabaseConnections pour obtenir le nombre total de connexions que le proxy RDS établit à la base de données cible et toutes les autres connexions à la base de données cible.

Il est recommandé d'examiner ces métriques avec une granularité d'une minute et d'utiliser la statistique Somme pour plus de détails sur les modèles d'utilisation des connexions.

Consulter les événements de journaux du proxy RDS

Modifiez le proxy RDS pour activer la journalisation améliorée afin d'obtenir des informations avancées, telles que les connexions en cours d'ouverture ou de fermeture. Vous pouvez également obtenir des informations sur les opérations internes, telles que l'épinglage et l'emprunt.

Remarque : la journalisation améliorée est désactivée automatiquement au bout de 24 heures.

Pour consulter les événements de journaux du proxy RDS, procédez comme suit :

  1. Ouvrez la console CloudWatch.
  2. Dans le volet de navigation, choisissez Journaux, puis Groupes de journaux.
  3. Sélectionnez le groupe de journaux pour votre proxy /aws/rds/proxy/.
  4. Dans l'onglet Flux de journaux sélectionnez le flux de journaux pour afficher les événements de journaux.

Exécuter des requêtes CloudWatch Logs Insights pour détecter des anomalies

Pour accéder à l'éditeur de requêtes dans CloudWatch Logs Insights, procédez comme suit :

  1. Ouvrez la console CloudWatch.
  2. Dans le volet de navigation, sélectionnez Journaux, puis Log Insights.

Utilisez l'éditeur de requêtes pour exécuter les requêtes suivantes. Dans chaque requête, remplacez prx-000##### par votre identifiant de proxy.

Pour obtenir des erreurs ou des avertissements, exécutez la requête suivante :

fields @timestamp, @message  
| sort @timestamp asc  
| filter @logStream like 'prx-000#####'  
| filter @message like / ERROR: / or @message like / WARN: /

Pour déterminer pourquoi la connexion client s'est fermée, exécutez la requête suivante :

fields @message  
| sort @timestamp asc  
| filter @logStream like 'prx-000#####'  
| filter @message like /The client connection closed/ and @message like /CUSTOMER/  
| parse 'Reason: *' as reason  
| stats count() as reasonCount by reason  
| sort by reasonCount desc  
| limit 20

Pour déterminer pourquoi la connexion à la base de données s'est fermée, exécutez la requête suivante :

fields @message  
| sort @timestamp asc  
| filter @logStream like 'prx-000xxxxx'  
| filter @message like /The database connection closed/ and @message like /CUSTOMER/  
| parse 'Reason: *' as reason  
| stats count() as reasonCount by reason  
| sort by reasonCount desc  
| limit 20

Modifier les paramètres de connexion du proxy RDS

Remarque : si des erreurs surviennent lorsque vous exécutez des commandes de l'interface de la ligne de commande AWS (AWS CLI), consultez la section Résoudre des erreurs liées à l’AWS CLI. Vérifiez également que vous utilisez bien la version la plus récente de l'AWS CLI.

Pourcentage de connexions maximum

Si votre base de données a atteint le paramètre de connexion maximal, le message d'erreur suivant s'affiche :

« The database connection closed. Reason: The pool reached the maximum connection setting, and a connection with different properties was required. »

Pour résoudre ce problème, surveillez les métriques CloudWatch DatabaseConnections et MaxDatabaseConnectionsAllowed. Si DatabaseConnections atteint MaxDatabaseConnectionsAllowed, limitez le trafic entrant. Vous pouvez également exécuter la commande modify-db-proxy-target-group de l'AWS CLI ou l'opération d'API ModifyDBProxyTargetGroup pour augmenter le paramètre MaxConnectionsPercent. Définissez le paramètre MaxConnectionsPercent sur une valeur supérieure d’au moins 30 % à votre utilisation surveillée maximale récente.

MaxIdleConnectionsPercent

Si le pool contient un trop grand nombre de connexions inactives, le message suivant s'affiche :

« The database connection closed. Reason: There were too many idle connections in the connection pool. A new slot in the connection pool is now available. »

Pour résoudre ce problème, surveillez les métriques CloudWatch ClientConnections et DatabaseConnections. Si ClientConnections est continuellement inférieur à DatabaseConnections, cela signifie que des connexions sont inactives à votre base de données cible. Par défaut, le paramètre MaxIdleConnectionsPercent est égal à 50 % de la valeur MaxConnectionsPercent. Pour modifier MaxIdleConnectionsPercent, exécutez la commande modify-db-proxy-target-group de l'AWS CLI ou l'opération d'API ModifyDBProxyTargetGroup. Maintenez un pourcentage élevé de connexions inactives à la base de données ouvertes. Utilisez des valeurs inférieures pour des charges de travail cohérentes afin d'éviter l'utilisation de ressources inactives.

IdleClientTimeout

Si votre base de données dépasse le délai d'inactivité de la connexion client, le message suivant s'affiche :

« The client connection closed. Reason: The idle timeout was exceeded. »

Pour supprimer les connexions inactives, réduisez IdleClientTimeout. Si votre charge de travail établit des connexions fréquentes avec le proxy, augmentez IdleClientTimeout afin de ne pas avoir à établir de connexions. Pour modifier IdleClientTimeout, exécutez la commande modify-db-proxy de l'AWS CLI ou l'opération d'API ModifyDBProxy.

ConnectionBorrowTimeout

Si vous obtenez une erreur de délai d’attente, le proxy RDS ne peut pas établir de connexion à la base de données.

Pour définir le paramètre ConnectionBorrowTimeout sur une valeur inférieure à la valeur du délai d’expiration de connexion, exécutez la commande modify-db-proxy-target-group de l’AWS CLI ou l'opération d'API ModifyDBProxyTargetGroup.

Fermer manuellement les connexions ouvertes

Si une connexion à la base de données est inactive pendant plus de 24 heures, le message d'erreur suivant s'affiche :

« The database connection closed. Reason: The idle connection exceeded the maximum connection duration. »

Vous ne pouvez pas modifier la durée de vie maximale d'une connexion de base de données inactive dans le proxy RDS. Il est préférable de fermer manuellement les connexions que votre application n'a pas besoin de réutiliser.

Informations connexes

Concepts et terminologie du proxy RDS

Surveillance des métriques du proxy RDS avec Amazon CloudWatch