Überlegungen zu RDS-Proxy-Verbindungen - Amazon Relational Database Service

Überlegungen zu RDS-Proxy-Verbindungen

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. Verringern Sie das Timeout für inaktive Client-Verbindungen, wenn der Proxy veraltete Verbindungen proaktiv entfernen soll. Wenn Ihr Workload häufige Verbindungen mit dem Proxy herstellt, erhöhen Sie das Timeout für inaktive Client-Verbindungen, um sich die Kosten für das Herstellen von Verbindungen zu sparen.

Diese Einstellung wird durch das Feld Idle client connection timeout (Zeitüberschreitung bei Client-Verbindungsinaktivität) in der RDS-Konsole und die Einstellung IdleClientTimeout 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 dazu, wie Sie den Wert der Einstellung IdleClientTimeout ändern, finden Sie unter dem CLI-Befehl modify-db-proxy oder der API-Operation ModifyDBProxy.

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 Connection pool maximum connections (Max. Verbindungen Verbindungspool) in der RDS-Konsole und die Einstellung MaxConnectionsPercent 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. Bei dieser Einstellung kann sich der Proxy das Recht vorbehalten, diese Verbindungen dann herzustellen, wenn der Workload sie 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 dazu, wie Sie den Wert der Einstellung MaxConnectionsPercent ändern, finden Sie unter dem CLI-Befehl modify-db-proxy-target-group oder der API-Operation ModifyDBProxyTargetGroup.

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. RDS-Proxy betrachtet eine Datenbankverbindung im Pool standardmäßig als inaktiv, wenn fünf Minuten lang keine Aktivität für die Verbindung aufgetreten ist.

Der Wert MaxIdleConnectionsPercent wird als Prozentsatz der Einstellung max_connections für die Zielgruppe der RDS-DB-Instance verwendet. Der Standardwert ist 50 Prozent von MaxConnectionsPercent und die Obergrenze ist der Wert MaxConnectionsPercent. Wenn MaxConnectionsPercent beispielsweise 80 ist, ist der Standardwert von MaxIdleConnectionsPercent 40. Wenn der Wert von MaxConnectionsPercent nicht angegeben ist, beträgt MaxIdleConnectionsPercent für SQL Server 5. Für alle anderen Engines ist 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 Einstellung MaxIdleConnectionsPercent von DBProxyTargetGroup in der AWS CLI und der API dargestellt. Informationen dazu, wie Sie den Wert der Einstellung MaxIdleConnectionsPercent ändern, finden Sie unter dem CLI-Befehl modify-db-proxy-target-group oder der API-Operation ModifyDBProxyTargetGroup.

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 Datenbank-Instance zur Bearbeitung der Anfrage verfügbar ist, beispielsweise wenn gerade ein Failover-Vorgang durchgeführt wird. Mit dieser Einstellung können Sie die beste Wartezeit für Ihre Anwendung festlegen, ohne das Abfrage-Timeout im Anwendungscode zu ändern.

Diese Einstellung wird durch das Feld Connection borrow timeout (Zeitüberschreitung für die Verbindung) in der RDS-Konsole oder die Einstellung ConnectionBorrowTimeout von 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 dazu, wie Sie den Wert der Einstellung ConnectionBorrowTimeout ändern, finden Sie unter dem CLI-Befehl modify-db-proxy-target-group oder der API-Operation ModifyDBProxyTargetGroup.

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 Client-Verbindungsdauer: RDS-Proxy erzwingt eine maximale Client-Verbindungsdauer 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 bei Inaktivität der Client-Verbindung: 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 Verbindungs-Pool konfiguriert ist, muss nicht auf die Einstellung max_connections für RDS-Proxy beschränkt sein.

Das Pooling von Client-Verbindungen führt zu einer längeren Client-Verbindungsdauer. Wenn es bei Ihren Verbindungen zum Pinning kommt, kann das Pooling von Client-Verbindungen die Effizienz des Multiplexings verringern. Client-Verbindungen, die im anwendungsseitigen Verbindungs-Pool gepinnt, aber inaktiv sind, behalten weiterhin eine Datenbankverbindung und verhindern, dass die Datenbankverbindung von anderen Client-Verbindungen wiederverwendet wird. Überprüfen Sie Ihre Proxy-Protokolle, um zu prüfen, ob bei Ihren Verbindungen ein Pinning auftritt.

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.