“통신 패킷을 읽는 중 오류가 발생했습니다”라는 오류가 발생했습니다. MySQL용 Amazon Relational Database Service(RDS) 또는 Amazon Aurora MySQL 호환 에디션 DB 인스턴스에서 이 오류를 해결하고 싶습니다.
간략한 설명
서버-클라이언트 연결이 끊어지거나, 잘못 닫히거나, 실패한 경우 Amazon RDS는 aborted_clients 또는 aborted_connects에 대한 상태 카운터를 증가시킵니다. aborted_clients 파라미터는 연결을 제대로 닫지 않고 클라이언트가 종료되어 중단된 연결 횟수를 설명합니다. aborted_connects 파라미터는 MySQL 서버 연결 시도 실패 횟수를 설명합니다.
log_error_verbosity는 오류 로그에 사용할 이벤트를 처리하기 위한 상세 정보를 지정합니다. 이 파라미터 값이 값 2를 초과하면 RDS for MySQL이 이 정보를 오류 로그에 기록합니다.
[Warning] Aborted connection xxx to db: '<database name>' user: '<user name>' host: '<host IP>' (Got an error reading communication packets)
이 경고는 aborted_clients 또는 aborted_connects 지표 값의 상태 카운터가 증가할 때마다 트리거됩니다. Amazon RDS는 데이터베이스 오류 로그를 사용하여 이 정보를 검색합니다. 자세한 내용은 MySQL 서버 웹사이트의 통신 오류 및 연결 중단을 참조하세요.
연결 중단 경고를 트리거할 수 있는 요인에는 다음이 포함되지만 이에 국한되지는 않습니다.
해결 방법
RDS for MySQL 또는 Aurora MySQL-Compatible에서 연결 중단됨 오류가 발생하는 경우 MySQL 파라미터 값을 검토합니다. 문제의 근본 원인을 파악한 후 MySQL 오류 로그를 모니터링하면서 파라미터를 업데이트하고 새 값을 테스트합니다.
Amazon RDS의 연결 중단됨 오류를 해결할 때 다음과 같은 접근 방식을 고려하세요.
- Amazon RDS 파라미터 그룹의 기본값을 사용하고 있는지 확인합니다. 연결 제한 시간과 관련된 파라미터의 기본값은 DB 인스턴스에 적합하지 않을 수 있습니다. 자세한 내용은 Amazon RDS for MySQL 파라미터 구성 모범 사례의 연결 제한 시간 관련 파라미터 섹션을 참조하세요.
- connect_timeout에 더 높은 값을 설정하여 이 값이 연결 중단됨 오류 메시지의 발생을 줄이는 데 도움이 되는지 확인하세요. 이 파라미터는 잘못된 핸드셰이크로 응답하기 전에 MySQL 서버 인스턴스가 기다려야 하는 시간(초)을 지정합니다.
- interactive_timeout 및 wait_timeout을 수정합니다. 연결 풀링(Java 등)을 사용하는 응용 프로그램에는 연결 풀 설정과 일치하는 제한 시간이 있어야 합니다.
- 인스턴스에서 대용량 쿼리를 처리해야 하는 경우 max_allowed_packet 값을 늘립니다. 행에 클라이언트의 max_allowed_packet 값보다 많은 데이터가 있는 경우 오류가 보고됩니다. 대규모 BLOB 열이나 긴 문자열을 사용하는 경우 이 값을 늘립니다. 자세한 내용은 Amazon RDS for MySQL 파라미터 구성 모범 사례의 max_allowed_packet 섹션을 참조하세요.
- net_write_timeout 및 net_read_timeout 값을 늘립니다. 참고: 이러한 값은 wait_timeout과 동일한 값으로 설정할 수 있습니다.
- RDS for MySQL 또는 Aurora MySQL 호환 연결이 제대로 닫혔는지 확인하세요. 데이터베이스를 종료하기 전에 클라이언트의 애플리케이션에서 mysql_close() 함수를 호출해야 합니다.
문제 해결 팁
연결 중단됨 오류 메시지가 계속 표시되는 경우 다음 문제 해결 팁을 시도해 보세요.
sudo tcpdump -vvv --interface eth0 port 3306 -W 10 -C 100
관련 정보
Amazon RDS DB 파라미터 그룹의 값을 수정하려면 어떻게 해야 하나요?
RDS DB 인스턴스의 DB 연결이 끊긴 이유는 무엇인가요?
로그를 보고 다운로드할 수 있도록 Aurora Serverless 클러스터에서 로그를 켜려면 어떻게 해야 하나요?