Überlegungen zur RDS-Proxyverbindung - Amazon Relational Database Service

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Überlegungen zur RDS-Proxyverbindung

Konfigurieren der Verbindungseinstellungen

Um das Verbindungs-Pooling von RDS Proxy anzupassen, können Sie die folgenden Einstellungen ändern:

IdleClientTimeout

Sie können angeben, wie lange eine Client-Verbindung inaktiv sein kann, bevor der Proxy sie schließt. Der Standardwert ist 1.800 Sekunden (30 Minuten).

Eine Client-Verbindung gilt als inaktiv, wenn die Anwendung innerhalb der angegebenen Zeit nach Abschluss der vorherigen Anforderung keine neue Anforderung absendet. Die zugrunde liegende Datenbankverbindung bleibt offen und wird an den Verbindungspool zurückgegeben. Somit ist sie für neue Clientverbindungen verfügbar. Wenn Sie möchten, dass der Proxy proaktiv veraltete Verbindungen entfernt und so das Timeout für inaktive Client-Verbindungen verringert. Wenn Ihr Workload häufig Verbindungen mit dem Proxy herstellt, erhöhen Sie den Timeout für inaktive Client-Verbindungen, um die Kosten für den Verbindungsaufbau zu sparen.

Diese Einstellung wird durch das Feld Timeout für die Verbindung bei inaktiven Clients in der RDS-Konsole und durch die IdleClientTimeout Einstellung in der AWS CLI und der API dargestellt. Informationen dazu, wie Sie den Wert des Felds Idle client connection timeout (Zeitüberschreitung bei Client-Verbindungsinaktivität) in der RDS-Konsole ändern, finden Sie unter AWS Management Console. Informationen zum Ändern des Werts der IdleClientTimeout Einstellung finden Sie im CLI-Befehl modify-db-proxyoder in der API-Operation Modify DBProxy.

MaxConnectionsPercent

Sie können die Anzahl der Verbindungen beschränken, die ein RDS Proxy mit der Zieldatenbank herstellen kann. Sie geben das Limit als Prozentsatz der maximal für Ihre Datenbank verfügbaren Verbindungen an. Diese Einstellung wird durch das Feld Maximale Anzahl an Verbindungen für den Verbindungspool in der RDS-Konsole und durch die MaxConnectionsPercent Einstellung in der AWS CLI und der API dargestellt.

Der Wert MaxConnectionsPercent wird als Prozentsatz der Einstellung max_connections für die RDS-DB-Instance ausgedrückt, die von der Zielgruppe verwendet wird. Der Proxy erstellt nicht alle diese Verbindungen im Voraus. Diese Einstellung ermöglicht es dem Proxy, diese Verbindungen so einzurichten, wie es der Workload benötigt.

Beispielsweise legt RDS Proxy für ein registriertes Datenbankziel, für das max_connections auf 1000 und MaxConnectionsPercent auf 95 festgelegt ist, 950 Verbindungen als Obergrenze für gleichzeitige Verbindungen mit diesem Datenbankziel fest.

Ein häufiger Nebeneffekt, der auftritt, wenn Ihre Workload die maximale Anzahl zulässiger Datenbankverbindungen erreicht, ist ein Anstieg der allgemeinen Abfragelatenz in Verbindung mit einer Erhöhung der Metrik DatabaseConnectionsBorrowLatency. Sie können die aktuell verwendeten Datenbankverbindungen und die Gesamtzahl der zulässigen Datenbankverbindungen überwachen, indem Sie die Metriken DatabaseConnections und MaxDatabaseConnectionsAllowed vergleichen.

Beachten Sie für das Festlegen dieses Parameters die folgenden bewährten Methoden:

  • Sorgen Sie für ausreichend Verbindungsspielraum für Änderungen des Workload-Musters. Es wird empfohlen, den Parameter mindestens 30 % über Ihrer zuletzt überwachten maximalen Nutzung einzustellen. Da RDS Proxy die Kontingente für Datenbankverbindungen auf mehrere Knoten neu verteilt, können interne Kapazitätsänderungen mindestens 30 % Spielraum für zusätzliche Verbindungen erfordern, um erhöhte Ausleihlatenzen zu vermeiden.

  • RDS Proxy reserviert eine bestimmte Anzahl von Verbindungen für die aktive Überwachung, um schnelles Failover, Weiterleitung von Datenverkehr und interne Operationen zu unterstützen. Die Metrik MaxDatabaseConnectionsAllowed umfasst diese reservierten Verbindungen nicht. Sie stellt die Anzahl der Verbindungen dar, die für den Workload verfügbar sind, und kann niedriger sein als der aus der Einstellung MaxConnectionsPercent abgeleitete Wert.

    Empfohlene Mindestwerte für MaxConnectionsPercent

    • db.t3.small: 30

    • db.t3.medium oder höher: 20

Informationen dazu, wie Sie den Wert des Felds Connection pool maximum connections (Max. Verbindungen Verbindungspool) in der RDS-Konsole ändern, finden Sie unter AWS Management Console. Informationen zum Ändern des Werts der MaxConnectionsPercent Einstellung finden Sie im modify-db-proxy-targetCLI-Befehl -group oder in der API-Operation Modify DBProxy TargetGroup.

Informationen zu Datenbankverbindungslimits finden Sie unter Maximale Anzahl von Datenbankverbindungen.

MaxIdleConnectionsPercent

Sie können die Anzahl inaktiver Datenbankverbindungen festlegen, die RDS Proxy im Verbindungspool behalten kann. Standardmäßig betrachtet der RDS-Proxy eine Datenbankverbindung in seinem Pool als inaktiv, wenn fünf Minuten lang keine Aktivität auf der Verbindung stattgefunden hat.

Der MaxIdleConnectionsPercent Wert wird als Prozentsatz der max_connections Einstellung für die Zielgruppe der RDS-DB-Instance ausgedrückt. Der Standardwert ist 50 Prozent von MaxConnectionsPercent und die Obergrenze ist der Wert MaxConnectionsPercent. Wenn beispielsweise 80 istMaxConnectionsPercent, dann MaxIdleConnectionsPercent ist der Standardwert 40. Wenn der Wert von MaxConnectionsPercent nicht angegeben ist, MaxIdleConnectionsPercent ist für RDS für SQL Server der Wert 5 und für alle anderen Engines der Standardwert 50.

Bei einem hohen Wert lässt der Proxy einen hohen Prozentsatz an ungenutzten Datenbankverbindungen offen. Bei einem niedrigen Wert schließt der Proxy einen hohen Prozentsatz von inaktiven Datenbankverbindungen. Wenn Ihre Workloads unvorhersehbar sind, sollten Sie erwägen, einen hohen Wert für MaxIdleConnectionsPercent festzulegen. Dies bedeutet, dass RDS-Proxy Aktivitätsspitzen verarbeiten kann, ohne viele neue Datenbankverbindungen zu öffnen.

Diese Einstellung wird durch die MaxIdleConnectionsPercent Einstellung von DBProxyTargetGroup in der AWS CLI und der API dargestellt. Informationen zum Ändern des Werts der MaxIdleConnectionsPercent Einstellung finden Sie im modify-db-proxy-targetCLI-Befehl -group oder in der API-Operation Modify DBProxy TargetGroup.

Informationen zu Datenbankverbindungslimits finden Sie unter Maximale Anzahl von Datenbankverbindungen.

ConnectionBorrowTimeout

Sie können angeben, wie lange RDS Proxy warten soll, bis eine Datenbankverbindung im Verbindungspool verfügbar ist, bevor ein Timeout-Fehler zurückgegeben wird. Standardmäßig sind 120 Sekunden festgelegt. Diese Einstellung greift, wenn die maximale Anzahl von Verbindungen erreicht ist und daher keine Verbindungen im Verbindungspool verfügbar sind. Dies gilt auch, wenn keine geeignete Datenbankinstanz zur Bearbeitung der Anfrage verfügbar ist, z. B. wenn ein Failover-Vorgang ausgeführt wird. Mit dieser Einstellung können Sie die beste Wartezeit für Ihre Anwendung festlegen, ohne das Abfragetimeout in Ihrem Anwendungscode zu ändern.

Diese Einstellung wird durch das Feld Timeout für die Verbindungsausleihe in der RDS-Konsole oder durch die ConnectionBorrowTimeout Einstellung DBProxyTargetGroup in der AWS CLI oder API dargestellt. Informationen dazu, wie Sie den Wert des Felds Connection borrow timeout (Zeitüberschreitung für die Verbindung) in der RDS-Konsole ändern, finden Sie unter AWS Management Console. Informationen zum Ändern des Werts der ConnectionBorrowTimeout Einstellung finden Sie im modify-db-proxy-targetCLI-Befehl -group oder in der API-Operation Modify DBProxy TargetGroup.

Client- und Datenbankverbindungen

Verbindungen von Ihrer Anwendung zum RDS-Proxy werden als Client-Verbindungen bezeichnet. Verbindungen von einem Proxy zur Datenbank sind Datenbankverbindungen. Bei Verwendung von RDS-Proxy werden Client-Verbindungen am Proxy beendet, während Datenbankverbindungen innerhalb des RDS-Proxys verwaltet werden.

Anwendungsseitiges Verbindungspooling kann den Vorteil bieten, dass der wiederkehrende Verbindungsaufbau zwischen Ihrer Anwendung und dem RDS-Proxy reduziert wird.

Berücksichtigen Sie die folgenden Konfigurationsaspekte, bevor Sie einen anwendungsseitigen Verbindungspool implementieren:

  • Maximale Lebensdauer der Client-Verbindung: RDS Proxy erzwingt eine maximale Lebensdauer von Client-Verbindungen von 24 Stunden. Dieser Wert kann nicht konfiguriert werden. Konfigurieren Sie Ihren Pool mit einer maximalen Verbindungsdauer von weniger als 24 Stunden, um unerwartete Verbindungsabbrüche beim Client zu vermeiden.

  • Timeout im Leerlauf der Client-Verbindung: Der RDS-Proxy erzwingt eine maximale Leerlaufzeit für Client-Verbindungen. Konfigurieren Sie Ihren Pool mit einem Timeout für inaktive Verbindungen, der niedriger ist als die Einstellung für das Leerlaufzeitlimit für Client-Verbindungen für den RDS-Proxy, um unerwartete Verbindungsabbrüche zu vermeiden.

Die maximale Anzahl von Client-Verbindungen, die in Ihrem anwendungsseitigen Verbindungspool konfiguriert sind, muss nicht auf die Einstellung max_connections für den RDS-Proxy beschränkt sein.

Das Pooling von Client-Verbindungen führt zu einer längeren Lebensdauer der Client-Verbindung. Wenn es bei Ihren Verbindungen zum Pinning kommt, kann das Pooling von Client-Verbindungen die Effizienz des Multiplexings verringern. Clientverbindungen, die im anwendungsseitigen Verbindungspool angeheftet, aber inaktiv sind, behalten weiterhin eine Datenbankverbindung bei und verhindern, dass die Datenbankverbindung von anderen Clientverbindungen wiederverwendet wird. Überprüfen Sie Ihre Proxyprotokolle, um zu überprüfen, ob es bei Ihren Verbindungen zu Pinning kommt.

Anmerkung

RDS-Proxy schließt Datenbankverbindungen nach 24 Stunden, wenn sie nicht mehr verwendet werden. Der Proxy führt diese Aktion unabhängig vom Wert der Einstellung für maximale Leerlaufverbindungen aus.