Warum erhalte ich die Fehlermeldung „Too many connections“, wenn ich eine Verbindung zu meiner Amazon Aurora MySQL-Instance herstelle?
Ich versuche, eine Verbindung zu meiner Amazon Aurora MySQL-kompatiblen Edition-DB-Instance herzustellen, erhalte aber die Fehlermeldung „Too many connections“. Ich möchte den Wert der maximalen Verbindungen für meine DB-Instance wissen und erfahren, wie ich ihn ändern kann.
Kurzbeschreibung
Du erhältst den Fehler Too many connections, wenn alle verfügbaren Verbindungen von anderen Clients verwendet werden. Der Parameter max_connections definiert die Gesamtzahl der Verbindungen in der DB-Instance.
Um dieses Problem zu beheben, sieh dir zunächst alle Threads an, die auf der DB-Instance ausgeführt werden. Aktiviere dann die Protokollierung auf der DB-Instance. Überprüfe abschließend die vorhandenen Verbindungen und beende nicht benötigte Verbindungen, um den Verbindungsdruck zu reduzieren.
Es hat sich beispielsweise bewährt, Verbindungen im Ruhemodus zu beenden. Oder erhöhe die maximale Anzahl von Verbindungen zu deiner DB-Instance.
Lösung
Threads anzeigen, die auf der DB-Instance ausgeführt werden
Sieh dir zunächst alle Abfragen an, die auf der DB-Instance ausgeführt werden.
Überprüfe dann den Wert threads_connected. Der Parameter threads_connected zeigt die Anzahl der geöffneten Verbindungen an. Weitere Informationen findest du unter Threads_connected auf der MySQL-Website. Führe den folgenden Befehl aus:
-
MySQL 5.7
mysql> SELECT variable_value AS Threads_Connected FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE variable_name='threads_connected';
-
MySQL 8.0
mysql> SELECT variable_value AS Threads_Connected from performance_schema.global_status where VARIABLE_NAME = 'threads_connected';
Hinweis: Da Aurora vom Administratorbenutzer (rdsadmin) aus Verbindungen zur Datenbank haben kann, wird möglicherweise ein höherer Wert für threads_connected als max_connections angezeigt.
Es hat sich bewährt, threads_connected oder information_schema.processlist anstelle von DatabaseConnections zu verwenden. Diese Parameter zeigen genau die verfügbaren MySQL-Verbindungen an, die von anderen Clients verwendet werden. DatabaseConnections zeigt die Gesamtzahl der Remote-TCP-Verbindungen an, berücksichtigt jedoch nicht ruhende Verbindungen oder Sitzungen, die die Datenbank-Engine für eigene Zwecke erstellt. Daher ist der DatabaseConnections-Wert möglicherweise niedriger als die Anzahl der Operationen, die von MySQL-Threads ausgeführt werden.
Aktivieren der Protokollierung auf der DB-Instance
Um die Ursache für das zunehmende Verbindungsproblem zu ermitteln, aktiviere die Protokollierung auf der Aurora MySQL-kompatiblen DB-Instance.
Aktiviere general_log, slow_query_log oder Protokollparameter für erweiterte Prüfungen.
Bestehende Verbindungen auf der DB Instance beenden
Beende Benutzersitzungen oder Abfragen, die auf der DB-Instance ausgeführt werden.
Die maximale Anzahl an Verbindungen zur DB-Instance erhöhen
Erhöhe die maximale Anzahl von Verbindungen zur DB-Instance mithilfe der folgenden Methoden.
Den Parameter max_connections erhöhen
Verwende eine benutzerdefinierte DB-Instance-Parametergruppe, um einen größeren Wert für den Parameter max_connections festzulegen. Diese Methode verursacht keinen Ausfall. Wenn die DB-Instance jedoch eine Standard-Parametergruppe verwendet, musst du die Parametergruppe in eine benutzerdefinierte Parametergruppe ändern. Diese Aktion verursacht einen Ausfall.
Beispiel für einen max_connection-Parameter:
max_connections = GREATEST({log(DBInstanceClassMemory/805306368)*45},{log(DBInstanceClassMemory/8187281408)*1000})
Überprüfe zunächst den aktuellen Wert des Parameters max_connections für deine DB-Instance. Überprüfe dazu die an die DB-Instance angefügte Parametergruppe oder führe die folgende Abfrage aus:
select @@max_connections;
Du kannst max_connections sowohl für den DB-Cluster als auch für die DB-Instance-Parametergruppe festlegen. Die DB-Instance-Parametereinstellung hat jedoch Vorrang vor der DB-Cluster-Parametereinstellung. Der Parameter max_connections ist dynamisch, sodass du die Instance nicht neu starten musst, nachdem du den Parameterwert geändert hast.
Weitere Informationen zu den standardmäßigen max_connections für jede DB-Instance-Klasse und zu anderen Anforderungen findest du unter Maximale Anzahl von Verbindungen zu einer Aurora MySQL-DB-Instance.
Hinweis: Aurora MySQL und Amazon Relational Database Service (Amazon RDS) für MySQL-DB-Instances haben unterschiedliche Mengen an Speicheraufwand. Der Wert max_connections kann für Aurora MySQL- und Amazon RDS für MySQL-DB-Instances, die dieselbe Instance-Klasse verwenden, unterschiedlich sein.
Bewährte Praktiken für max_connections findest du unter Wie erhöhe ich die maximale Anzahl an Verbindungen meiner Amazon RDS für MySQL- oder Amazon RDS für PostgreSQL-Instance?
Hochskalieren der Instance
Wenn du den Maximalwert von max_connections überschreitest, skaliere die Instance auf eine DB-Instance-Klasse mit mehr Speicher hoch.
Hinweis: Die DB-Instance erlebt einen Ausfall, wenn sie skaliert wird.
Verwendung von Amazon-RDS-Proxy
Verwende Amazon-RDS-Proxy für Aurora, um die Skalierbarkeit deiner Anwendung zu verbessern.
Ähnliche Videos
Relevanter Inhalt
- AWS OFFICIALAktualisiert vor 2 Monaten
- AWS OFFICIALAktualisiert vor 2 Monaten
- AWS OFFICIALAktualisiert vor 2 Monaten
- AWS OFFICIALAktualisiert vor 4 Jahren