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

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 è sufficiente per le proprie esigenze.

Soluzione

  1. 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'istruzione SELECT 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.

  2. 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.

  3. 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

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