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
- Adobe Commerce local, todas las versiones compatibles
Problema
Cuando un cliente de MySQL o el servidor mysqld recibe un paquete con más 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 sufrir un error de pérdida de conexión con el servidor MySQL durante el error 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
-
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ónSELECT
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. -
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. -
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
- Descripción general de la instalación local en nuestra documentación para desarrolladores.
- La carga de la base de datos pierde la conexión con MySQL en nuestra base de conocimiento de soporte.
- Prácticas recomendadas de bases de datos para Adobe Commerce en infraestructura en la nube en nuestra base de conocimiento de soporte.
- Prácticas recomendadas para resolver problemas de rendimiento de la base de datos en nuestra base de conocimiento de soporte.
- Prácticas recomendadas para modificar tablas de base de datos en el libro de estrategias de implementación de Commerce