Adobe Commerce의 max_allowed_packet 관련 데이터베이스 오류

이 문서에서는 의 데이터베이스 연결 오류에 대한 솔루션을 제공합니다. var/log/exception.log 많은 수의 제품을 가져오거나 서버에서 설정된 것보다 큰 패킷을 처리하도록 하는 다른 작업을 수행할 때 발생할 수 있습니다 max_allowed_packet 기본값인 16MB보다 큽니다.

영향을 받는 제품 및 버전

문제

MySQL 클라이언트 또는 mysqld 서버가 다음보다 큰 패킷을 수신함: max_allowed_packet 바이트, 발행 ER_NET_PACKET_TOO_LARGE 오류(다음에서 볼 수 있음) exception.log) 연결을 닫습니다. 일부 클라이언트에서는 쿼리하는 동안 MySQL 서버에 대한 연결이 끊어졌습니다. 통신 패킷이 너무 큰 경우 오류가 발생합니다.

재현 단계

다양한 작업에서 이 문제를 발생시킬 수 있습니다. 여기에는 많은 수의 제품을 Adobe Commerce으로 가져오려고 시도하거나 너무 많은 데이터를 다시 보내는 트랜잭션 쿼리가 포함될 수 있습니다. 그 결과는에서 데이터베이스 연결 오류입니다. var/log/exception.log 및 제품을 성공적으로 가져오지 못하는 것과 같은 기타 문제.

원인

MySQL의 기본값 16MB max_allowed_packets 설정이 사용자의 요구 사항에 비해 충분히 크지 않습니다.

솔루션

  1. 개별 행이 현재 행을 초과하는 쿼리 식별 max_allowed_packet 제한. 이러한 쿼리는 반환되는 데이터의 양을 줄이기 위해 다시 작성해야 합니다. 이 작업은 열의 수가 SELECT 문 또는 표 디자인의 일부로 다양한 열에 대해 더 작은 데이터 형식 선택. New Relic 계정이 있는 경우 New Relic APM 오류 페이지New Relic APM 데이터베이스 페이지, 및 New Relic 로그 관련 쿼리를 검색합니다.

  2. 빠른 수정을 위해 일시적으로 다음을 요청할 수 있습니다. max_allowed_packet 다음과 같은 경우 크기 증가 티켓 제출그러나 값이 너무 크면 네트워크 정체가 발생하여 복제 장애가 발생할 수 있으므로 고객 엔지니어링 팀의 판단에 따라 이 작업을 수행할 수 있습니다.

  3. 가장 좋은 방법은 일부 대용량 데이터베이스 테이블에 대해 CLI에서 다음 명령을 실행하는 것입니다.

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

    이러한 테이블에서 실행 중인 쿼리를 평가하여 권장 사항을 초과하는지 여부를 확인합니다 max_allowed_packet 크기: 16MB 1단계에서 동일한 프로세스를 따라 이러한 쿼리에서 반환되는 데이터를 줄입니다.

관련 읽기

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