Errori di database relativi a max_allowed_packet su Adobe Commerce
Questo articolo fornisce una soluzione per gli errori di connessione al database in var/log/exception.log
che possono verificarsi quando si importa un numero elevato di prodotti o si esegue un'altra attività che costringe il server a gestire pacchetti di dimensioni maggiori di quelle impostate in max_allowed_packet
e di dimensioni maggiori di quelle predefinite, ovvero 16 MB.
Prodotti e versioni interessati
- Adobe Commerce on-premise, tutte le versioni supportate
Problema
Quando un client MySQL o il server mysqld riceve un pacchetto maggiore di max_allowed_packet byte, viene generato un errore ER_NET_PACKET_TOO_LARGE (visibile in exception.log
) e la connessione viene chiusa. Con alcuni client, è inoltre possibile che si ottenga una connessione interrotta al server MySQL durante l'errore di query se il pacchetto di comunicazione è troppo grande.
Passaggi da riprodurre
Questo problema può essere generato da diverse attività. Ad esempio, puoi tentare di importare un numero elevato di prodotti in Adobe Commerce o eseguire query transazionali per restituire una quantità eccessiva di dati. Il risultato sono errori di connessione al database in var/log/exception.log
e altri problemi, come l'importazione dei prodotti non riuscita.
Causa
Il valore predefinito di 16 MB per l'impostazione MySQL max_allowed_packets
non è sufficientemente grande per le tue esigenze.
Soluzione
-
Identifica le query in cui le singole righe superano il limite
max_allowed_packet
corrente. Tali query devono essere riscritte per ridurre la quantità di dati restituiti. Per eseguire l'operazione, è possibile ridurre il numero di colonne nell'istruzioneSELECT
oppure scegliere un tipo di dati più piccolo per varie colonne come parte della struttura della tabella. Se si dispone di un account New Relic, utilizzare la pagina Errori APM di New Relic e la pagina Database APM di New Relic e i registri New Relic per cercare le query rilevanti. -
Per una correzione rapida, è possibile richiedere temporaneamente un aumento delle dimensioni di
max_allowed_packet
quando si invia un ticket, a discrezione del team di progettazione clienti, poiché un valore troppo grande può causare errori di replica causando congestione della rete. -
Come best practice, è consigliabile eseguire il comando seguente nella CLI per alcune tabelle di database di grandi dimensioni:
code language-none show table status like [table name to match]
Valutare le query in esecuzione su queste tabelle per determinare se si supera la dimensione
max_allowed_packet
consigliata di 16 MB. Segui lo stesso processo nel passaggio 1 per ridurre i dati restituiti da tali query.
Lettura correlata
- Panoramica sull'installazione locale nella documentazione per gli sviluppatori.
- Il caricamento del database perde la connessione a MySQL nella Knowledge Base di supporto.
- Best practice per il database di Adobe Commerce sull'infrastruttura cloud nella knowledge base di supporto.
- Best practice per risolvere i problemi di prestazioni del database nella knowledge base di supporto.
- Best practice per la modifica delle tabelle del database nel playbook di implementazione di Commerce