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
- Adobe Commerce On-Premise, alle unterstützten 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
-
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 derSELECT
-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. -
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. -
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
- Übersicht über die lokale Installation in unserer Entwicklerdokumentation.
- Datenbank-Upload verliert die Verbindung zu MySQL in unserer Support-Wissensdatenbank.
- Best Practices für Datenbanken für Adobe Commerce auf CloudInfrastrukturen in unserer Support-Wissensdatenbank.
- Best Practices zur Behebung von Problemen mitDatenbankleistung - in unserer Support-Wissensdatenbank.
- Best Practices zum Ändern von Datenbanktabellen im Commerce-Implementierungs-Playbook