Erreurs de base de données liées à max_allowed_packet sur Adobe Commerce

Cet article fournit une solution pour les erreurs de connexion à la base de données dans le var/log/exception.log qui peuvent se produire lors de l’importation d’un grand nombre de produits ou de l’exécution d’une autre tâche qui force le serveur à gérer des paquets plus volumineux que celui défini dans max_allowed_packet qui est supérieur à la taille par défaut de 16 Mo.

Produits et versions concernés

Problème

Lorsqu'un client MySQL ou le serveur mysqld reçoit un paquet supérieur à max_allowed_packet}, il génère une erreur ER_NET_PACKET_TOO_LARGE (qui peut être vue dans exception.log) et ferme la connexion. Avec certains clients, vous pouvez également obtenir une connexion perdue au serveur MySQL lors de la requête si le paquet de communication est trop volumineux.

Étapes à reproduire

Plusieurs tâches peuvent produire ce problème. Cela peut inclure la tentative d’importation d’un grand nombre de produits dans Adobe Commerce ou des requêtes transactionnelles renvoyant trop de données. Il en résulte des erreurs de connexion à la base de données dans var/log/exception.log et d’autres problèmes, comme des produits qui n’ont pas été importés avec succès.

Cause

La valeur par défaut de 16 Mo pour le paramètre MySQL max_allowed_packets n’est pas assez grande pour répondre à vos besoins.

Solution

  1. Identifiez les requêtes pour lesquelles les lignes individuelles dépassent la limite actuelle de max_allowed_packet. De telles requêtes doivent être réécrites afin de réduire la quantité de données renvoyées. Pour ce faire, vous pouvez inclure un plus petit nombre de colonnes dans l’instruction SELECT ou choisir un type de données plus petit pour diverses colonnes dans la conception de tableau. Si vous disposez d’un compte New Relic, utilisez la page Erreurs APM New Relic et la page Bases de données New Relic APM et les journaux New Relic pour rechercher les requêtes appropriées.

  2. Pour une correction rapide, vous pouvez temporairement demander une augmentation de la taille max_allowed_packet lorsque vous envoyez un ticket, mais c’est à la discrétion de l’équipe d’ingénierie du client, car une valeur trop importante peut entraîner des échecs de réplication en provoquant des embouteillages du réseau.

  3. Pour certaines de vos tables de base de données volumineuses, il est recommandé d’exécuter la commande suivante dans l’interface de ligne de commande :

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

    Évaluez les requêtes exécutées sur ces tables pour déterminer si vous dépassez la taille recommandée de max_allowed_packet de 16 Mo. Suivez la même procédure à l’étape 1 pour réduire les données renvoyées par de telles requêtes.

Lecture connexe

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