Wie behebe ich den Fehler „Got an error reading communication packets“ in Amazon RDS für MySQL oder Aurora MySQL-kompatibel?

Lesedauer: 5 Minute
0

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:

Ähnliche Informationen

Wie ändere ich die Werte einer Amazon RDS DB-Parametergruppe?

Warum wurden DB-Verbindungen auf meiner RDS-DB-Instance unterbrochen?

Wie kann ich Protokolle auf einem Aurora Serverless-Cluster aktivieren, damit ich die Protokolle anzeigen und herunterladen kann?