Databasfel relaterade till max_allowed_packet på Adobe Commerce

Den här artikeln innehåller en lösning för databasanslutningsfel i var/log/exception.log som kan uppstå när ett stort antal produkter importeras eller en annan åtgärd som tvingar servern att hantera större paket än vad som angetts i max_allowed_packet som är större än standardvärdet, 16 MB.

Berörda produkter och versioner

Problem

När en MySQL-klient eller mysqld-servern tar emot ett paket som är större än max_allowed_package byte, genereras ett ER_NET_PACKET_TOO_LARGE -fel (som visas i exception.log) och anslutningen stängs. Med vissa klienter kan du även få en borttappad anslutning till MySQL-servern under ett fråge-fel om kommunikationspaketet är för stort.

Steg som ska återskapas

En mängd olika uppgifter kan ge upphov till det här problemet. Det kan vara att försöka importera ett stort antal produkter till Adobe Commerce eller transaktionsfrågor som skickar tillbaka för mycket data. Resultatet är databasanslutningsfel i var/log/exception.log och andra problem, till exempel att produkter inte kan importeras.

Orsak

Standardvärdet 16 MB för inställningen MySQL max_allowed_packets är inte tillräckligt stort för dina behov.

Lösning

  1. Identifiera frågor där de enskilda raderna överskrider den aktuella max_allowed_packet-gränsen. Sådana frågor måste skrivas om för att minska mängden data som returneras. Detta kan du göra genom att ha ett mindre antal kolumner i programsatsen SELECT eller välja en mindre datatyp för olika kolumner som en del av tabelldesignen. Om du har ett New Relic-konto använder du New Relic APM-felsida och New Relic APM-databaser samt New Relic-loggar för att söka efter relevanta frågor.

  2. För att åtgärda detta snabbt kan du tillfälligt begära att storleken på max_allowed_packet ökas när du skickar in en biljett, men det är kundkonstruktörsteamets val, eftersom ett för stort värde kan orsaka replikeringsfel genom att orsaka nätverksproblem.

  3. Det är en god idé att köra följande kommando i CLI för några av de stora databastabellerna:

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

    Utvärdera de frågor som körs i de här tabellerna för att avgöra om du överskrider den rekommenderade storleken på max_allowed_packet på 16 MB. Följ samma process i steg ett för att minska antalet data som returneras av sådana frågor.

Relaterad läsning

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