Errores de base de datos relacionados con max_allowed_packet en Adobe Commerce

Este artículo proporciona una solución para los errores de conexión a bases de datos en var/log/exception.log esto puede ocurrir al importar un gran número de productos o al realizar otra tarea que obligue al servidor a gestionar paquetes mayores que los establecidos en max_allowed_packet que es mayor que el valor predeterminado, 16 MB.

Productos y versiones afectados

Problema

Cuando un cliente MySQL o mysqld el servidor recibe un paquete mayor que max_allowed_packet bytes, emite un ER_NET_PACKET_TOO_LARGE error (que se puede ver en el exception.log) y cierra la conexión. Con algunos clientes, también puede obtener una Se ha perdido la conexión con el servidor MySQL durante la consulta error si el paquete de comunicación es demasiado grande.

Pasos a seguir

Hay diversas tareas que pueden producir este problema. Esto puede incluir intentar importar un gran número de productos en Adobe Commerce o consultas transaccionales que devuelvan demasiados datos. El resultado son errores de conexión de base de datos en var/log/exception.log y otros problemas, como que los productos no se importen correctamente.

Causa

El valor predeterminado de 16 MB para MySQL max_allowed_packets la configuración no es lo suficientemente grande para sus necesidades.

Solución

  1. Identificar consultas en las que las filas individuales superan al actual max_allowed_packet límite. Estas consultas deben reescribirse para reducir la cantidad de datos que se devuelven. Esto se puede hacer teniendo un número menor de columnas en la SELECT o elegir un tipo de datos más pequeño para varias columnas como parte del diseño de la tabla. Si tiene una cuenta de New Relic, utilice la variable Página Errores de APM de New Relic y el Página Bases de Datos New Relic APM, y Registros de New Relic para buscar las consultas relevantes.

  2. Para una corrección rápida, puede solicitar temporalmente la max_allowed_packet tamaño que se aumentará al enviar un ticket, pero esto depende del equipo de ingeniería de clientes, ya que un valor demasiado grande puede provocar errores de replicación al provocar congestión de red.

  3. Como práctica recomendada, debe ejecutar el siguiente comando en la CLI para algunas de las tablas de base de datos grandes:

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

    Evalúe las consultas que se ejecutan en estas tablas para determinar si está excediendo el recomendado max_allowed_packet tamaño de 16 MB. Siga el mismo proceso en el paso uno para reducir los datos que devuelven estas consultas.

Lectura relacionada

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