Wie behebe ich den Fehler „Got an error reading communication packets“ in Amazon RDS für MySQL oder Aurora MySQL-kompatibel?
Ich verwende eine Amazon Relational Database Service (Amazon RDS) für MySQL- oder eine Amazon Aurora MySQL-kompatible Edition DB-Instance. Ich habe die Fehlermeldung „Got an error reading communication packets“ erhalten.
Kurzbeschreibung
Du erhältst die Fehlermeldung „[Warning] Aborted connection abc to db: 'database name' user: 'user name' host: 'host IP' (Got an error reading communication packets)“.
Du erhältst die vorhergehende Fehlermeldung, wenn entweder der Wert des Parameters aborted_clients oder aborted_connects ansteigt. Amazon RDS bricht die Verbindung ab und erhöht den Statuszähler für den Parameter aborted_clients, wenn der Client stirbt und die Verbindung nicht schließt oder die Verbindung unterbrochen wird. Der Wert des Parameters aborted_connects erhöht sich, wenn der Client keine Verbindung zum MySQL-Server herstellen kann.
Wenn der Wert von log_error_verbosity zwei überschreitet, erhältst du auch die Fehlermeldung. Der Parameter log_error_verbosity gibt die Ausführlichkeit für die Verwaltung von Ereignissen an, die für das Fehlerprotokoll sind. Weitere Informationen findest du unter B.3.2.9 Kommunikationsfehler und abgebrochene Verbindungen auf der MySQL-Server-Website.
Die folgenden Faktoren können die Fehlermeldung „Got an error reading communication packets“ verursachen:
- Client- oder Treiberinkompatibilität.
- Firewalls oder Proxys, die inaktive Verbindungen schließen oder eine Verbindung blockieren.
- Eine falsch geschlossene Client-Server-Verbindung, die zu einer höheren Anzahl von Verbindungen im Ruhezustand in Amazon RDS für MySQL führt.
- Eine Client-Anwendung, die eine Verbindung falsch beendet.
Hinweis: MySQL schließt zwangsweise inaktive Verbindungen mit langer Ausführungszeit. - Inaktive Verbindungen, die die Schwellenwerte wait_timeout oder interactive_timeout überschreiten.
- Eine Client-Verbindung, die beim Abrufen eines Verbindungspakets den Schwellenwert von connect_timeout in Sekunden überschreitet.
- Unzureichende Werte für Parameter wie net_write_timeout und net_read_timeout.
- Der Wert des Parameters max_allowed_packet wurde überschritten.
Hinweis: Das Problem tritt auf, wenn der Wert zu klein ist oder Abfragen mehr Speicher benötigen, als du Amazon RDS für MySQL zuweist.
Lösung
Timeout-Parameter ändern
Um herauszufinden, was das Problem verursacht, überprüfe die Parameter, die sich auf Konnektivität-Timeouts beziehen. Wenn du Standardwerte für die Parametergruppe verwendest, ändere den Standardwert des Konnektivitäts-Timeouts für die DB-Instance.
Gehe wie folgt vor, um den Konnektivitätsparameter zu ändern:
- Öffne die Amazon-RDS-Konsole.
- Wähle im Navigationsbereich Parametergruppen aus.
- Wähle die Parametergruppe für die DB-Instance aus.
- Wähle Bearbeiten aus.
- Suche nach dem Parameter „Konnektivitäts-Timeout“ und ändere dann den Wert.
Hinweis: Nachdem du die Werte geändert hast, überwache die MySQL-Fehlerprotokolle, wenn du den neuen Wert testest.
connect_timeout
Stelle einen höheren Wert für connect_timeout ein, um zu testen, ob der Wert das Auftreten dieses Problems reduziert. Der Parameter connect_timeout definiert, wie viele Sekunden die MySQL-Server-DB-Instance warten muss, bis die DB-Instance mit einem schlechten Handshake reagiert. Weitere Informationen findest du unter connect_timeout auf der MySQL-Website.
interactive_timeout und wait_timeout
Du kannst auch interactive_timeout und wait_timeout ändern. Weitere Informationen zu diesen Parametern findest du unter wait_timeout oder interactive_timeout auf der MySQL-Website. Anwendungen, die Verbindungspooling verwenden (wie Java), müssen über Timeouts verfügen, die den Verbindungspool-Einstellungen entsprechen.
max_allowed_packet
Wenn die Instance große Abfragen, große Binary Large Object BLOB-Spalten oder lange Zeichenfolgen verwalten muss, erhöhe den Wert von max_allowed_packet. Wenn eine Zeile mehr Daten als den Wert max_allowed_packet enthält, erhältst du eine Fehlermeldung. Weitere Informationen findest du unter max_allowed_packet auf der MySQL-Website.
net_write_timeout und net_read_timeout
Erhöhe die Werte net_write_timeout und net_read_timeout. Du kannst net_write_timeout und net_read_timeout auf den gleichen Wert wie wait_timeout setzen. Weitere Informationen findest du unter net_write_timeout und net_read_timeout auf der MySQL-Website.
Rufe die Funktion mysql_close() in der Client-Anwendung auf, um sicherzustellen, dass die Amazon RDS für MySQL- oder Aurora MySQL-kompatiblen Verbindungen korrekt geschlossen werden.
Andere Methoden zur Problembehandlung verwenden
Wenn du immer noch die Fehlermeldung „Got an error reading communications packets“ erhältst, ergreife eine der folgenden Maßnahmen:
- Aktiviere Performance Insights, um den Zeitrahmen der SQL-Anweisungen abzurufen, bei denen Probleme auftreten. Informationen zu Aurora MySQL-kompatibel findest du unter Performance Insights für Aurora aktivieren und deaktivieren.
Wichtig: Performance Insights wird am 30. Juni 2026 das Ende seiner Lebensdauer erreichen. Du kannst vor dem 30. Juni 2026 ein Upgrade auf den Modus „Erweitert“ von Database Insights durchführen. Wenn du kein Upgrade durchführst, verwenden DB-Cluster, die Performance Insights verwenden, standardmäßig den Modus „Standard“ von Database Insights. Nur der Modus „Erweitert“ von Database Insights unterstützt Ausführungspläne und On-Demand-Analysen. Wenn die Cluster standardmäßig auf den Modus „Standard“ eingestellt sind, kannst du diese Funktionen möglicherweise nicht auf der Konsole verwenden. Informationen zum Aktivieren des Modus „Standard“ findest du unter Einschalten des Modus „Erweitert“ von Database Insights für Amazon RDS und Einschalten des Modus „Erweitert“ von Database Insights für Amazon Aurora. - Aktiviere Protokolle langsamer Abfragen auf der Amazon RDS- oder Aurora MySQL-kompatiblen DB-Instance, um Abfragen zu protokollieren, die länger als der Wert long_query_time ausgeführt werden.
Hinweis: Der Standardwert long_query_time ist 10 Sekunden. - Aktiviere Amazon Virtual Private Cloud (Amazon VPC)-Ablaufprotokolle, um zu überprüfen, ob der Server oder der Client die Verbindung geschlossen hat.
- Stelle sicher, dass deine Anwendung die Verbindung von MySQL richtig geschlossen hat.
- Führe den folgenden Befehl tcpdump auf der Maschine aus, auf der der Client ausgeführt wird, um Beispielpaketerfassungen zu testen:
sudo tcpdump -vvv --interface eth0 port 3306 -W 10 -C 100
Ähnliche Informationen
Warum wurden DB-Verbindungen auf meiner Amazon RDS-DB-Instance unterbrochen?
Wie kann ich Protokolle für einen Aurora Serverless DB-Cluster anzeigen und herunterladen?
- Sprache
- Deutsch
Ähnliche Videos


Relevanter Inhalt
AWS OFFICIALAktualisiert vor 2 Jahren