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

Cet article fournit une solution aux erreurs de connexion à la base de données dans la variable var/log/exception.log qui peuvent survenir lors de l’importation d’un grand nombre de produits ou lors d’une autre tâche qui force le serveur à gérer des paquets plus volumineux que ceux définis dans max_allowed_packet supérieur à la valeur par défaut, 16 Mo.

Produits et versions concernés

Problème

Lorsqu’un client MySQL ou la variable mysqld le serveur reçoit un paquet plus grand que max_allowed_packet octets, il émet une ER_NET_PACKET_TOO_LARGE (qui s’affiche dans la variable exception.log) et ferme la connexion. Avec certains clients, vous pouvez également obtenir une Perte de la connexion au serveur MySQL lors de la requête s’il s’agit d’un paquet de communication trop grand.

É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. Le résultat est une erreur de connexion à la base de données dans var/log/exception.log et d’autres problèmes, comme le fait que les produits n’aient pas été importés avec succès.

Cause

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

Solution

  1. Identifier les requêtes lorsque les lignes individuelles dépassent la ligne actuelle max_allowed_packet limite. De telles requêtes doivent être réécrites afin de réduire la quantité de données renvoyées. Pour ce faire, il suffit d’avoir un plus petit nombre de colonnes dans la variable SELECT ou en choisissant un type de données plus petit pour différentes colonnes dans le cadre de la conception de tableau. Si vous disposez d’un compte New Relic, utilisez la variable Page des erreurs New Relic APM et la variable Page Bases de données New Relic APM, et Journaux New Relic pour rechercher les requêtes pertinentes.

  2. Pour une correction rapide, vous pouvez temporairement demander la max_allowed_packet taille à augmenter lorsque vous envoi d’un ticket, mais c’est à la discrétion de l’équipe d’ingénierie du client, car une valeur trop élevée 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]
    

    Evaluez les requêtes exécutées sur ces tables pour déterminer si vous dépassez les valeurs recommandées. max_allowed_packet taille 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