Datenbankfehler im Zusammenhang mit „max_allowed_package“ in Adobe Commerce

Dieser Artikel bietet eine Lösung für Datenbankverbindungsfehler in der var/log/exception.log, die beim Importieren einer großen Anzahl von Produkten oder beim Ausführen einer anderen Aufgabe auftreten können, die den Server zwingt, größere Pakete zu verarbeiten als in max_allowed_packet festgelegt, die größer als der Standardwert (16 MB) ist.

Betroffene Produkte und Versionen

Problem

Wenn ein MySQL-Client oder der mysqld-Server ein Paket erhält, das größer als max_allowed_package Byte ist, gibt er einen ER_NET_PACKET_TOO_LARGE-Fehler aus (der in der exception.log zu sehen ist) und schließt die Verbindung. Bei einigen Clients tritt möglicherweise auch ein Fehler Verbindung zum Server während MySQL Abfrage unterbrochen auf, wenn das Kommunikationspaket zu groß ist.

Schritte zur Reproduktion

Dieses Problem kann durch eine Vielzahl von Aufgaben verursacht werden. Dazu kann der Versuch gehören, eine große Anzahl von Produkten in Adobe Commerce zu importieren, oder Transaktionsabfragen, die zu viele Daten zurücksenden. Das Ergebnis sind Datenbankverbindungsfehler in var/log/exception.log und andere Probleme, wie z. B. nicht erfolgreich importierte Produkte.

Ursache

Der Standardwert von 16 MB für die Einstellung MySQL max_allowed_packets ist nicht groß genug für Ihre Anforderungen.

Lösung

  1. Identifizieren Sie Abfragen, bei denen die einzelnen Zeilen das aktuelle max_allowed_packet überschreiten. Solche Abfragen müssen neu geschrieben werden, um die Menge der zurückgegebenen Daten zu reduzieren. Dies kann durch eine kleinere Anzahl von Spalten in der SELECT-Anweisung oder durch Auswahl eines kleineren Datentyps für verschiedene Spalten als Teil des Tabellendesigns erfolgen. Wenn Sie über ein New Relic-Konto verfügen, verwenden Sie die Seite New Relic APM-Fehler und die Seite New Relic APM-Datenbanken und New Relic-, um nach den entsprechenden Abfragen zu suchen.

  2. Zur schnellen Behebung können Sie beim eines Tickets vorübergehend eine Erhöhung der max_allowed_packet anfordern Dies liegt jedoch im Ermessen des Customer Engineering-Teams, da eine zu große Menge eines Werts zu Replikationsfehlern führen kann, da dies zu Netzwerkengpässen führt.

  3. Als Best Practice sollten Sie den folgenden Befehl in Ihrer CLI für einige Ihrer großen Datenbanktabellen ausführen:

    code language-none
    show table status like [table name to match]
    

    Werten Sie die Abfragen aus, die für diese Tabellen ausgeführt werden, um festzustellen, ob Sie die empfohlene max_allowed_packet von 16 MB überschreiten. Führen Sie denselben Prozess in Schritt 1 aus, um die von solchen Abfragen zurückgegebenen Daten zu reduzieren.

Verwandtes Lesen

recommendation-more-help
8bd06ef0-b3d5-4137-b74e-d7b00485808a