Wie kann ich die maximalen Verbindungen meiner Amazon-RDS-for-MySQL-Instance erhöhen?

Letzte Aktualisierung: 27.8.2021

Ich möchte die maximalen Verbindungen meiner Amazon-Relational-Database-Service (Amazon RDS)-for-MySQL-Instance erhöhen. Wie kann ich das machen und was sind einige bewährte Methoden für die Verwendung des Parameters max_connections?

Auflösung

In Amazon RDS for MySQL überwacht die Metrik max_connections die festgelegte maximale Anzahl von (erlaubten) gleichzeitigen Client-Verbindungen.

Standardmäßig basiert der Parameter max_connections auf der folgenden Formel in Amazon RDS for MySQL (berechnet aus dem Wert DBInstanceClassMemory):

max_connections = DBInstanceClassMemory/12582880

Der Standardwert für max_connections hängt von der Instance-Klasse ab, die von der Amazon-RDS-Instance verwendet wird. Eine DB-Instance-Klasse mit mehr verfügbarem Speicher unterstützt auch eine größere Anzahl von Datenbankverbindungen.

Um den aktuellen Wert für max_connections zu überprüfen, führen Sie den folgenden Befehl aus, nachdem Sie eine Verbindung zu Ihrer Amazon-RDS-for-MySQL-Instance hergestellt haben:

SHOW GLOBAL VARIABLES LIKE 'max_connections';

Wenn Ihre Client-Verbindungen den Wert max_connections überschreiten, wird ein Fehler „Zu viele Verbindungen“ angezeigt.

Die folgenden Faktoren können dazu führen, dass Ihre Datenbankverbindungen den Wert max_connections überschreiten:

  • Erhöhungen der Anzahl der Client-/Anwendungsverbindungen zur DB-Instance, verursacht durch einen erhöhten Workload oder Sperrung auf Tabellen-/Zeilenebene.
  • Unsachgemäßes Schließen einer Client-/Anwendungsverbindung nach dem Ende eines Vorgangs. Wenn eine Serververbindung nicht ordnungsgemäß geschlossen wird, öffnet die Client-Anwendung eine neue Verbindung. Im Laufe der Zeit können diese neuen Serververbindungen dazu führen, dass Ihre Instance den Wert max_connections überschreitet. Um alle aktiven Verbindungen in Ihrer MySQL-DB-Instance aufzulisten, verwenden Sie den Befehl SHOW FULL PROCESSLIST.
  • Schlafende Verbindungen (auch als inaktive offene Verbindungen bezeichnet) werden durch höhere Verbindungs-Timeout-Parameter (wie wait_timeout oder interactive_timeout) verursacht. Wenn Sie ein zu hohes Verbindungslimit konfigurieren, können Sie eine höhere Speicherauslastung erzielen, auch wenn diese Verbindungen nicht verwendet werden. Wenn der Anwendungsserver versucht, alle Clientverbindungen zur Datenbank zu öffnen, werden diese Verbindungen möglicherweise abgelehnt. Verwenden Sie die Operation mysql.rds_kill, um eine schlafende Verbindung zu beenden.
    Tipp: Es empfiehlt sich, nur die aktiven Verbindungen zu konfigurieren, die für die Anwendungsleistung erforderlich sind. Sie könnten auch ein Upgrade auf eine größere Amazon-RDS-DB-Instance-Klasse in Betracht ziehen.

Erhöhen des max_connections_parameters Ihrer Amazon-RDS-for-MySQL-Instance

Sie können die maximale Anzahl von Verbindungen zu Ihrer DB-Instance mit den folgenden Methoden erhöhen:

  • Skalieren Sie Ihre DB-Instance auf eine DB-Instance-Klasse mit mehr Speicher.
    Warnung: Ausfallzeiten treten auf, wenn Sie eine Amazon-RDS-DB-Instance ändern.
  • Legen Sie mithilfe einer benutzerdefinierten Parametergruppe auf Instance-Ebene einen größeren Wert für den Parameter max_connections fest. Das Erhöhen des Parameters max_connections verursacht keinen Ausfall.
  • Wenn Ihre DB-Instance eine Standardparametergruppe verwendet, ändern Sie die Parametergruppe in eine benutzerdefinierte Parametergruppe. Stellen Sie sicher, dass Sie die benutzerdefinierte DB-Parametergruppe Ihrer Amazon-RDS-for-MySQL-Instance zuordnen und die Instance neu starten. Nachdem die neue benutzerdefinierte Parametergruppe Ihrer DB-Instance zugeordnet wurde, können Sie den Parameterwert max_connections ändern.
    Hinweis: Das Ändern der Parametergruppe kann zu einem Ausfall führen. Weitere Informationen finden Sie unter Arbeiten mit DB-Parametergruppen.

Informationen zum Erstellen einer benutzerdefinierten Parametergruppe und zum Ändern des Parameters max_connections finden Sie unter Wie ändere ich die Werte einer Amazon RDS-DB-Parametergruppe?

Bewährte Methoden für die Konfiguration des Parameters max_connections

Beachten Sie unbedingt die folgenden bewährten Methoden, wenn Sie mit dem Parameter max_connections für Ihre DB-Instance arbeiten:

  • Die standardmäßigen Verbindungslimits sind für Systeme abgestimmt, die die Standardwerte für andere große Speicherverbraucher verwenden (z. B. den Pufferpool). Es empfiehlt sich, die Instance-Klasse zu skalieren, anstatt den Wert der Instance-Klasse zu ändern. Wenn Ihre Instances jedoch über viel freien Speicher verfügen, können Sie diesen Parameter manuell ändern. Wenn Sie diese Einstellungen für Ihre DB-Instance ändern, sollten Sie das Verbindungslimit anpassen, um die Erhöhung oder Verringerung des verfügbaren Speichers auf den DB-Instances zu berücksichtigen.
  • Stellen Sie den Wert max_connections etwas höher als die maximale Anzahl von Verbindungen ein, die Sie voraussichtlich auf jeder DB-Instance öffnen werden.
  • Wenn Sie auch das Leistungsschema aktiviert haben, achten Sie genau auf die Parametereinstellung max_connections. Die Speicherstrukturen des Leistungsschemas werden automatisch basierend auf Serverkonfigurationsvariablen dimensioniert. Je höher Sie die Variable setzen, desto mehr Speicher verbraucht das Leistungsschema. In extremen Fällen kann dies bei kleineren Instance-Typen wie T2 und T3 zu Problemen mit nicht genügend Speicher führen. Wenn Sie das Leistungsschema verwenden, empfiehlt es sich, die Einstellung max_connections auf dem Standardwert zu belassen. Wenn Sie vorhaben, den Wert max_connections deutlich zu erhöhen (auf einen höheren Wert als den Standardwert), sollten Sie das Leistungsschema deaktivieren.
    Hinweis: Wenn Sie Performance Insights für eine Amazon-RDS-for-MySQL-DB-Instance aktivieren, wird auch das Leistungsschema automatisch aktiviert.
  • Wenn Sie den Parameter max_connections einstellen, sollten Sie auch die folgenden MySQL-verbindungsbezogenen Parameter überprüfen:
    wait_timeout: Anzahl der Sekunden, die der Server auf Aktivitäten bei einer nicht interaktiven TCP/IP- oder Unix-Dateiverbindung wartet, bevor er sie schließt.
    interactive_timeout: Anzahl der Sekunden, die der Server auf Aktivitäten einer interaktiven Verbindung wartet, bevor er sie schließt.
    net_read_timeout: Anzahl der Sekunden, um auf weitere Daten von einer TCP/IP-Verbindung zu warten, bevor der Lesevorgang unterbrochen wird.
    net_write_timeout: Anzahl der Sekunden, um auf TCP/IP-Verbindungen zu warten, bis ein Block geschrieben wird, bevor der Schreibvorgang beendet wird.
    max_execution_time: Ausführungstimeout für SELECT-Anweisungen in Millisekunden.
    max_connect_errors: Ein Host wird für weitere Verbindungen gesperrt, wenn es mehr als diese Anzahl von unterbrochenen Verbindungen gibt.
    max_user_connections: Maximale Anzahl gleichzeitiger Verbindungen, die zu einem bestimmten MySQL-Konto zulässig sind.

Hinweis: Dieser Artikel enthält keine empfohlenen Werte für die aufgelisteten Parameter, da diese Werte je nach Anwendungsfall variieren.


War dieser Artikel hilfreich?


Benötigen Sie Hilfe zur Fakturierung oder technischen Support?