Knowledge Center Monthly Newsletter - June 2025
Stay up to date with the latest from the Knowledge Center. See all new Knowledge Center articles published in the last month, and re:Post's top contributors.
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
Wenn Server-Client-Verbindungen unterbrochen werden, falsch geschlossen werden oder erfolglos sind, erhöht Amazon RDS den Statuszähler für aborted_clients oder aborted_connects. Der Parameter aborted_clients beschreibt die Anzahl der Verbindungen, die Amazon RDS abgebrochen hat, weil der Client abgestürzt ist und die Verbindung falsch geschlossen hat. Der Parameter aborted_connects beschreibt die Anzahl der fehlgeschlagenen Versuche, eine Verbindung zum MySQL-Server herzustellen.
Wenn der Wert eines dieser Parameter steigt, erhältst du die folgende Fehlermeldung in den Protokollen:
„[Warning] Aborted connection abc to db: 'database name' user: 'user name' host: 'host IP' (Got an error reading communication packets)“.
Wenn der Wert von log_error_verbosity 2 überschreitet, erhältst du auch die vorherige Fehlermeldung. Der Parameter log_error_verbosity gibt die Ausführlichkeit für die Verwaltung von Ereignissen an, die für das Fehlerprotokoll vorgesehen sind.
Weitere Informationen findest du unter B.3.2.9 Communication errors and aborted connections (B.3.2.9 Kommunikationsfehler und abgebrochene Verbindungen) auf der MySQL-Server-Website.
Die folgenden Faktoren können den Fehler Error reading communications packets verursachen:
- Client- oder Treiberinkompatibilität.
- Firewalls oder Proxys, die inaktive Verbindungen schließen oder eine Verbindung blockieren können.
- Eine Client-Server-Verbindung, die falsch geschlossen wurde und zu einer höheren Anzahl von Verbindungen im Ruhezustand in 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: Wenn der Wert zu klein ist oder Abfragen mehr Speicher benötigen, als Amazon RDS für MySQL zugewiesen ist, erhältst du den vorherigen Fehler.
Lösung
Überprüfe die Parameterwerte für das Konnektivitäts-Timeout. Nachdem du die Ursache des Problems identifiziert hast, ändere den Parameterwert entsprechend dem von dir identifizierten Problem. Überwache dann die MySQL-Fehlerprotokolle, während du den neuen Wert testest.
Problembehebung bei der Konfiguration
Prüfe, ob du die Standardwerte der Amazon RDS-Parametergruppe verwendest. Möglicherweise musst du den Standardwert des Konnektivitäts-Timeouts für die DB-Instance ändern. Weitere Informationen findest du im Abschnitt Parameter im Zusammenhang mit dem Konnektivitäts-Timeout unter Bewährte Methoden zur Konfiguration von Parametern für Amazon RDS für MySQL, Teil 3: Parameter in Bezug auf Sicherheit, operative Verwaltbarkeit und Konnektivitäts-Timeout.
Stelle einen höheren Wert für connect_timeout ein, um zu testen, ob der Wert das Auftreten des Fehlers Error reading communications packets 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.
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.
Wenn die Instance große Abfragen, große 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 im Abschnitt max_allowed_packet unter Bewährte Methoden zur Konfiguration von Parametern für Amazon RDS für MySQL, Teil 3: Parameter in Bezug auf Sicherheit, operative Verwaltbarkeit und Konnektivitäts-Timeout. Oder siehe max_allowed_packet auf der MySQL-Website. Erhöhe die Werte net_write_timeout und net_read_timeout.
Hinweis: 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.
Stelle sicher, dass die mit RDS für MySQL oder Aurora MySQL kompatiblen Verbindungen richtig geschlossen sind. Bevor du die Datenbank verlässt, rufe die Funktion mysql_close() in der Client-Anwendung auf.
Erweiterte Problembehandlung
Wenn du immer noch die Fehlermeldung 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 findest du unter Performance Insights für Aurora aktivieren und deaktivieren.
- 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 sehen, 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 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
Wie ändere ich die Werte einer Amazon RDS DB-Parametergruppe?
Warum wurden DB-Verbindungen auf meiner RDS-DB-Instance unterbrochen?
Ähnliche Videos

