Direkt zum Inhalt

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

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:

  1. Öffne die Amazon-RDS-Konsole.
  2. Wähle im Navigationsbereich Parametergruppen aus.
  3. Wähle die Parametergruppe für die DB-Instance aus.
  4. Wähle Bearbeiten aus.
  5. 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:

Ä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?