Erros de banco de dados relacionados a max_allowed_packet no Adobe Commerce

Este artigo fornece uma solução para erros de conexão de banco de dados no var/log/exception.log que podem ocorrer durante a importação de um grande número de produtos ou a execução de outra tarefa que força o servidor a manipular pacotes maiores do que o configurado no max_allowed_packet, que é maior do que o padrão, 16MB.

Produtos e versões afetados

Problema

Quando um cliente MySQL ou o servidor mysqld recebe um pacote com mais de max_allowed_packet bytes, ele emite um erro ER_NET_PACKET_TOO_LARGE (que pode ser visto no exception.log) e fecha a conexão. Com alguns clientes, você também pode obter uma conexão Perdida com o servidor MySQL durante o erro de consulta se o pacote de comunicação for muito grande.

Etapas a serem reproduzidas

Várias tarefas podem produzir esse problema. Isso pode incluir tentar importar um grande número de produtos para o Adobe Commerce ou consultas transacionais enviando dados demais. O resultado são erros de conexão de banco de dados em var/log/exception.log e outros problemas, como produtos que não foram importados com êxito.

Causa

O valor padrão de 16 MB para a configuração MySQL max_allowed_packets não é grande o suficiente para suas necessidades.

Solução

  1. Identifique consultas nas quais as linhas individuais excedem o limite atual de max_allowed_packet. Essas consultas precisam ser regravadas para reduzir a quantidade de dados retornados. Isso pode ser feito tendo um número menor de colunas na instrução SELECT ou escolhendo um tipo de dados menor para várias colunas como parte do design da tabela. Se você tiver uma conta do New Relic, use a página Erros de APM do New Relic e a página Bancos de Dados de APM do New Relic e os Logs do New Relic para procurar as consultas relevantes.

  2. Para correção rápida, você pode solicitar temporariamente que o tamanho de max_allowed_packet seja aumentado ao enviar um tíquete, mas isso fica a critério da equipe de engenharia de clientes, pois um valor muito grande pode causar falhas de replicação, causando congestionamento de rede.

  3. Como prática recomendada, você deve executar o seguinte comando na CLI para algumas das tabelas grandes do banco de dados:

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

    Avalie as consultas em execução nessas tabelas para determinar se você está excedendo o tamanho max_allowed_packet recomendado de 16 MB. Siga o mesmo processo na etapa um para reduzir os dados retornados por essas consultas.

Leitura relacionada

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