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 la base de datos en var/log/exception.log que pueden producirse 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 sean mayores que los 16 MB predeterminados.

Productos y versiones afectados

Problema

Cuando un cliente MySQL o el servidor mysqld recibe un paquete mayor de max_allowed_packet bytes, emite un error de ER_NET_PACKET_TOO_LARGE (que se puede ver en exception.log) y cierra la conexión. Con algunos clientes, también puede que se produzca un error de pérdida de conexión con el servidor MySQL durante query 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 a la base de datos en var/log/exception.log y otros problemas, como que los productos no se importaron correctamente.

Causa

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

Solución

  1. Identifique consultas en las que las filas individuales superen el límite actual de max_allowed_packet. Estas consultas deben reescribirse para reducir la cantidad de datos que se devuelven. Esto se puede hacer si se tiene un número menor de columnas en la instrucción SELECT o si se elige un tipo de datos más pequeño para varias columnas como parte del diseño de tabla. Si tiene una cuenta de New Relic, use la página Errores de APM de New Relic y la página Bases de datos de APM de New Relic, y Registros de New Relic para buscar las consultas relevantes.

  2. Para una corrección rápida, puede solicitar temporalmente que el tamaño de max_allowed_packet aumente cuando envíe 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 causar 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 se sobrepasa el tamaño recomendado de max_allowed_packet 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