Share Your AWS re:Post Experience - Quick 3 Question Survey
Help us improve AWS re:Post! We're interested in understanding how you use re:Post and its impact on your AWS journey. Please take a moment to complete our brief 3-question survey.
Wie erhöhe ich die maximale Anzahl an Verbindungen meiner Amazon RDS für MySQL- oder Amazon RDS für PostgreSQL-Instance?
Ich möchte die maximale Anzahl an Verbindungen für meine Amazon Relational Database Service (Amazon RDS) für MySQL- oder Amazon RDS für PostgreSQL-DB-Instance erhöhen.
Behebung
Hinweis: Bevor du die maximale Anzahl von Verbindungen erhöhst, empfiehlt es sich, deine vorhandenen Konfigurationen zu optimieren.
Überprüfen des max_connections-Werts
Die Metrik max_connections legt die maximale Anzahl von Datenbankverbindungen sowohl für RDS für MySQL als auch für RDS für PostgreSQL fest. Der Standardwert von max_connections hängt von der Instance-Klasse ab, die die Amazon RDS-Instance verwendet. Eine DB-Instance-Klasse mit mehr verfügbarem Speicher kann eine größere Anzahl von Datenbankverbindungen haben.
Um den Wert max_connections zu überprüfen, stelle eine Verbindung zur Amazon RDS-DB-Instance für die DB-Engine her und führe den folgenden Befehl aus.
-
RDS für MySQL:
SHOW GLOBAL VARIABLES LIKE 'max_connections';
-
RDS für PostgreSQL:
postgres=> show max_connections;
Hinweis: Die Standardanzahl vonmax_connections, die du mit einer Formel berechnest, kann leicht von der Ausgabe der vorherigen Befehle abweichen. Diese Abweichung ist darauf zurückzuführen, dass Amazon RDS einen Teil des gesamten DBInstanceClassMemory-Speichers für die zugrunde liegenden Betriebssystemoperationen reserviert. Die vorherigen Befehle verwenden nur den Speicher, der für die PostgreSQL-Engine reserviert ist, und nicht für das zugrunde liegende Host-Betriebssystem.
Optimierung der bestehenden Verbindungen
Bevor du den Wert von max_connections erhöhst, prüfe, ob du die Anzahl der vorhandenen Verbindungen reduzieren kannst. Wenn die Anzahl der Client-Verbindungen den Wert max_connections überschreitet, wird eine der folgenden Fehlermeldungen angezeigt:
- MySQL: Fehler „Too many connections“
- PostgreSQL: „FATAL: remaining connection slots are reserved for non replicate superuser connections“
Diese Fehler können auftreten, wenn Amazon RDS eine erhöhte Workload oder Sperren auf Tabellen- oder Zeilenebene hat. Wenn die Workload auf der Instance wie erwartet funktioniert, musst du den Parameter max_connections erhöhen.
Sicherstellen, dass nach dem Ende einer Operation alle Client- und Anwendungsverbindungen geschlossen sind
Wenn eine Serververbindung nicht geschlossen wird, öffnet die Client-Anwendung eine neue Verbindung. Im Laufe der Zeit können diese neuen Serververbindungen dazu führen, dass die Instance den Wert max_connections überschreitet.
Führe den folgenden Befehl aus, um alle Verbindungen für die RDS für MySQL-DB-Instance aufzulisten:
SHOW FULL PROCESSLIST;
Führe den folgenden Befehl aus, um die Verbindungen für jede Datenbank für die RDS für PostgreSQL-Instance anzuzeigen:
SELECT datname, numbackends FROM pg_stat_database;
(nur MySQL) Suche nach ruhenden Verbindungen
Ruhende oder inaktive offene Verbindungen treten auf, wenn du höhere Werte für Verbindungstimeout-Parameter wie wait_timeout oder interactive_timeout festlegst. Wenn du ein hohes Verbindungskontingent konfigurierst, ist die Speicherauslastung möglicherweise hoch, auch wenn du diese Verbindungen nicht verwendest.
Führe die folgende Abfrage aus, um die inaktiven Verbindungen in einer RDS für MySQL-Instance anzuzeigen:
SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST WHERE COMMAND='Sleep';
Führe den folgenden Befehl aus, um eine ruhende Verbindung in einer RDS für MySQL-DB-Instance zu beenden:
CALL mysql.rds_kill(example-pid);
(nur PostgreSQL) Suche nach inaktiven Verbindungen
Führe die folgende Abfrage aus, um die inaktiven Verbindungen in einer RDS für PostgreSQL-Instance anzuzeigen:
SELECT * FROM pg_stat_activity WHERE pid <> pg_backend_pid() AND state in ('idle', 'idle in transaction', 'idle in transaction (aborted)', 'disabled') AND state_change < current_timestamp - INTERVAL '15' MINUTE;
Die Ausgabe der Abfrage zeigt Backend-Prozesse, die sich für mehr als 15 Minuten im **Leerlauf **, während der Transaktion im Leerlauf während der Transaktion im Leerlauf (abgebrochen) oder in einem deaktivierten Zustand befinden.
Führe den folgenden Befehl aus, um eine inaktive Verbindung in einer RDS für PostgreSQL-Instance zu beenden:
SELECT pg_terminate_backend(example-pid);
Hinweis: Es hat sich bewährt, nur die aktiven Verbindungen zu konfigurieren, die du für die Anwendungsleistung benötigst. Wenn die Anwendungsstruktur inaktive Verbindungen erfordert, empfiehlt es sich, Amazon RDS Proxy zu verwenden.
Erhöhen der maximalen Anzahl von Verbindungen
Hinweis: Wenn du eine Instance hochskalierst, kommt es zu Ausfallzeiten und die Art der Abrechnung wird geändert.
Um die maximale Anzahl an Verbindungen zu erhöhen, empfiehlt es sich, die DB-Instance auf eine DB-Instance-Klasse mit mehr Speicher hochzuskalieren. Es ist keine bewährte Methode, den Parameter max_connections über den Standardwert hinaus zu erhöhen. Bei der Instance treten möglicherweise Probleme auf, wenn mehr Verbindungen eine höhere Speicherbelegung erfordern. Instances, die wenig Speicher haben, können abstürzen. Wenn du den Wert max_connections erhöhst, überwache die Amazon CloudWatch-Metrik FreeableMemory, um die Ressourcennutzung zu überwachen.
Wenn die Instances jedoch über viel freien Speicher verfügen, ändere den Parameter **max_connections ** manuell. Bevor du max_connections anpasst, passe das Verbindungslimit in der Parametergruppe an, um die Änderungen des verfügbaren Speichers auf den DB-Instances zu berücksichtigen.
Wenn die DB-Instance eine Standard-Parametergruppe verwendet, musst du eine benutzerdefinierte Parametergruppe erstellen und verwenden, um max_connections zu ändern. Ordne die benutzerdefinierte DB-Parametergruppe deiner Amazon RDS-Instance zu und starte die Instance anschließend neu. Nachdem die neue benutzerdefinierte Parametergruppe der DB-Instance zugeordnet wurde, kannst du den Parameterwert max_connections ändern. Weitere Informationen findest du unter Wie ändere ich die Werte einer Amazon RDS-DB-Parametergruppe. Stelle den Wert max_connections auf etwas höher als die maximale Anzahl von Verbindungen ein, die du voraussichtlich auf jeder DB-Instance öffnen wirst.
Hinweis: Während des Neustarts kommt es zu einem kurzen Ausfall.
Bewährte Methoden für RDS für MySQL zur Erhöhung von max_connections
Wenn du das Leistungsschema aktiviert hast, empfiehlt es sich, die Standardeinstellung max_connections zu verwenden. Die Speicherstrukturen des Leistungsschemas werden automatisch auf der Grundlage der Serverkonfigurationsvariablen dimensioniert.
Hinweis: Wenn du Performance Insights für eine Amazon RDS für MySQL-DB-Instance aktivierst, wird das Leistungsschema automatisch aktiviert.
Optimiere für deinen Anwendungsfall die Timeout-Einstellungen für die folgenden verbindungsbezogenen MySQL-Parameter:
- wait_timeout
- interactive_timeout
- net_read_timeout
- net_write_timeout
- max_execution_time
- max_connect_errors
- max_user_connections
Weitere Informationen zu diesen Parametern findest du unter 7.1.8 Server system variables (7.1.8 Serversystemvariablen) auf der MySQL-Website.
Bewährte Methoden für RDS für PostgreSQL zur Erhöhung von max_connections
Optimiere für deinen Anwendungsfall die Timeout-Einstellungen für die folgenden verbindungsbezogenen PostgreSQL-Parameter:
- idle_in_transaction_session_timeout
- tcp_keepalives_idle
- tcp_keepalives_interval
- tcp_keepalives_count
Weitere Informationen zu diesen Parametern findest du unter idle_in_transaction_session_timeout (integer) und 19.3.2 TCP settings (19.3.2 TCP-Einstellungen) auf der PostgreSQL-Website.
Ähnliche Videos


Relevanter Inhalt
- AWS OFFICIALAktualisiert vor 2 Jahren
- AWS OFFICIALAktualisiert vor 3 Monaten
- AWS OFFICIALAktualisiert vor 3 Monaten
- AWS OFFICIALAktualisiert vor einem Monat