Direkt zum Inhalt

Wie überwache ich Amazon-RDS-Proxy-Verbindungspools und optimiere Datenbankverbindungen?

Lesedauer: 5 Minute
0

Ich möchte die Proxy-Verbindungspools von Amazon Relational Database Services (Amazon RDS) überwachen und meine Datenbankverbindungen optimieren.

Lösung

Die Metriken für RDS Proxy und die Ziel-RDS-Datenbank überwachen

Gehe wie folgt vor:

  1. Öffne die Amazon-CloudWatch-Konsole.
  2. Wähle im Navigationsbereich Metriken und dann Alle Metriken.
  3. Wähle auf der Registerkarte Durchsuchen die Option RDS und dann Per-Proxy-Metriken aus.
  4. Suche nach den folgenden Metriken:
    ClientConnections für die Anzahl der eingehenden Verbindungen von deiner Anwendung.
    MaxDatabaseConnectionsAllowed für die maximale Anzahl von Datenbankverbindungen, die der RDS-Proxy zulässt.
    DatabaseConnections für die aktuelle Anzahl von Verbindungen, die RDS Proxy zur Zieldatenbank herstellt.
  5. Wähle auf der Registerkarte Durchsuchen die Option RDS und dann DBInstanceIdentifier aus.
  6. Suche nach der DatabaseConnections-Metrik, um die Gesamtzahl der Verbindungen abzurufen, die RDS Proxy zur Zieldatenbank herstellt, sowie alle anderen Verbindungen zur Zieldatenbank.

Es empfiehlt sich, diese Metriken mit einer Granularität von 1 Minute zu überprüfen und die Summe-Statistik für weitere Details zu Verbindungsnutzungsmustern zu verwenden.

RDS-Proxy-Protokollereignisse überprüfen

Ändere den RDS-Proxy, um Erweiterte Protokollierung zu aktivieren, sodass du erweiterte Details abrufen kannst, z. B. die Verbindungen, die geöffnet oder geschlossen werden. Du kannst auch Details zu internen Vorgängen wie Pinning und Borrowing abrufen.

Hinweis: Die erweiterte Protokollierung wird nach 24 Stunden automatisch deaktiviert.

Gehe wie folgt vor, um die RDS-Proxy-Protokollereignisse zu überprüfen:

  1. Öffne die CloudWatch-Konsole.
  2. Wähle im Navigationsbereich Protokolle und dann Protokollgruppen aus.
  3. Wähle die Protokollgruppe für deinen Proxy /aws/rds/proxy/ aus.
  4. Wähle auf der Registerkarte Protokollstreams den Protokollstream aus, um die Protokollereignisse anzuzeigen.

CloudWatch-Logs-Insights-Abfragen ausführen, um Anomalien zu erkennen

Gehe wie folgt vor, um auf den Abfrage-Editor in CloudWatch Logs Insights zuzugreifen:

  1. Öffne die CloudWatch-Konsole.
  2. Wähle im Navigationsbereich Protokolle und dann Protokoll-Insights.

Verwende den Abfrage-Editor, um die folgenden Abfragen auszuführen. Ersetze in jeder Abfrage prx-000##### durch deine Proxy-ID.

Führe die folgende Abfrage aus, um Fehler oder Warnungen abzurufen:

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

Führe die folgende Abfrage aus, um zu ermitteln, warum die Client-Verbindung geschlossen wurde:

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

Führe die folgende Abfrage aus, um zu ermitteln, warum die Datenbankverbindung geschlossen wurde:

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

RDS-Proxy-Verbindungseinstellungen ändern

Hinweis: Wenn du beim Ausführen von AWS Command Line Interface (AWS CLI)-Befehlen Fehlermeldungen erhältst, findest du weitere Informationen dazu unter Problembehandlung bei der AWS CLI. Stelle außerdem sicher, dass du die neueste Version der AWS CLI verwendest.

MaxConnectionsPercent

Wenn die Datenbank die maximale Verbindungseinstellung erreicht hat, erhältst du die folgende Fehlermeldung: 

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

Überwache die CloudWatch-Metriken DatabaseConnections und MaxDatabaseConnectionsAllowed, um dieses Problem zu beheben. Wenn DatabaseConnections MaxDatabaseConnectionsAllowed erreicht, begrenze den eingehenden Datenverkehr. Oder führe den AWS-CLI-Befehl modify-db-proxy-target-group oder die API-Operation ModifyDBProxyTargetGroup aus, um die MaxConnectionsPercent-Einstellung zu erhöhen. Stelle den Wert MaxConnectionsPercent so ein, dass er mindestens 30 % über der maximalen, zuletzt überwachten Auslastung liegt.

MaxIdleConnectionsPercent

Wenn der Pool zu viele inaktive Verbindungen enthält, erhältst du die folgende Meldung: 

„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.“

Überwache die CloudWatch-Metriken ClientConnections und DatabaseConnections, um dieses Problem zu beheben. Wenn der Wert ClientConnections kontinuierlich niedriger als DatabaseConnections ist, gibt es inaktive Verbindungen zur Zieldatenbank. Standardmäßig beträgt die Einstellung MaxIdleConnectionsPercent 50 % des MaxConnectionsPercent-Werts. Um MaxIdleConnectionsPercent zu ändern, führe den AWS-CLI-Befehl modify-db-proxy-target-group oder die API-Operation ModifyDBProxyTargetGroup aus. Halte einen hohen Prozentsatz inaktiver Datenbankverbindungen offen. Verwende bei gleichbleibenden Workloads niedrigere Werte, um eine ungenutzte Ressourcenbelegung zu vermeiden.

IdleClientTimeout

Wenn die Datenbank das Timeout für inaktive Client-Verbindungen überschreitet, erhältst du die folgende Meldung:

„The client connection closed. Reason: The idle timeout was exceeded.“

Um inaktive Verbindungen zu entfernen, reduziere IdleClientTimeout. Wenn deine Workload häufig Verbindungen mit dem Proxy herstellt, erhöhe IdleClientTimeout, sodass du keine Verbindungen herstellen musst. Um IdleClientTimeout zu ändern, führe den AWS-CLI-Befehl modify-db-proxy oder die API-Operation ModifyDBProxy aus.

ConnectionBorrowTimeout

Wenn du einen Timeout-Fehler erhältst, kann RDS Proxy keine Datenbankverbindung herstellen.

Um die ConnectionBorrowTimeout-Einstellung auf einen Wert festzulegen, der niedriger als der Wert für das Verbindungs-Timeout ist, führe den AWS-CLI-Befehl modify-db-proxy-target-group oder die API-Operation ModifyDBProxyTargetGroup aus.

Manuelles Schließen offener Verbindungen

Wenn eine Datenbankverbindung länger als 24 Stunden inaktiv ist, erhältst du die folgende Fehlermeldung:

„The database connection closed. Reason: The idle connection exceeded the maximum connection duration.“

Du kannst die maximale Lebensdauer einer inaktiven Datenbankverbindung in RDS Proxy nicht ändern. Stattdessen empfiehlt es sich, Verbindungen, die deine Anwendung nicht wiederverwenden muss, manuell zu schließen.

Ähnliche Informationen

Konzepte und Terminologie von RDS Proxy

Überwachung von RDS-Proxy-Metriken mit Amazon CloudWatch