Amazon Relational Database Service(Amazon RDS) for MySQL 또는 Amazon Aurora MySQL 호환 버전 DB 인스턴스를 사용하고 있는데 ‘Got an error reading communication packets’라는 오류가 발생했습니다.
간략한 설명
‘[Warning] Aborted connection abc to db: 'database name' user: 'user name' host: 'host IP' (Got an error reading communication packets)’ 오류 메시지가 표시됩니다.
aborted_clients 또는 aborted_connects 파라미터 값이 증가하면 위 오류 메시지가 표시됩니다. 클라이언트가 종료되고 연결을 닫지 않거나 연결이 끊어지면 Amazon RDS는 연결을 취소하고 aborted_clients 파라미터의 상태 카운터를 늘립니다. 클라이언트가 MySQL 서버에 연결하지 못하면 aborted_connects 파라미터 값이 증가합니다.
log_error_verbosity 값이 2를 초과하는 경우에도 오류 메시지가 표시됩니다. log_error_verbosity 파라미터는 오류 로그에 대한 이벤트 관리의 상세 수준을 지정합니다. 자세한 내용은 MySQL 웹 사이트의 Communication errors and aborted connections를 참조하십시오.
‘Got an error reading communication packets’ 오류 메시지는 다음과 같은 요인으로 인해 발생할 수 있습니다.
- 클라이언트 또는 드라이버 비호환성
- 유휴 연결을 닫거나 연결을 차단하는 방화벽 또는 프록시
- 클라이언트-서버 연결이 잘못 닫혀 Amazon RDS for MySQL 내에서 휴면 연결 수가 늘어나는 경우
- 클라이언트 애플리케이션이 연결을 잘못 종료하는 경우
참고: MySQL은 장기 실행 중인 유휴 연결을 강제로 종료합니다.
- wait_timeout 또는 interactive_timeout 임계값을 초과하는 유휴 연결
- 연결 패킷을 가져올 때 connect_timeout초의 임계값을 초과하는 클라이언트 연결
- net_write_timeout 및 net_read_timeout과 같은 파라미터의 불충분한 값
- 초과된 max_allowed_packet 파라미터 값
참고: 이 문제는 값이 너무 작거나 Amazon RDS for MySQL에 할당한 메모리보다 많은 메모리가 쿼리에 필요할 때 발생합니다.
해결 방법
제한 시간 파라미터 수정
문제의 원인을 파악하려면 연결 제한 시간과 관련된 파라미터를 검토하십시오. 파라미터 그룹에 기본값을 사용하는 경우 DB 인스턴스의 기본 연결 제한 시간 값을 변경하십시오.
연결 파라미터를 변경하려면 다음 단계를 완료하십시오.
- Amazon Aurora 및 RDS 콘솔을 엽니다.
- 탐색 창에서 파라미터 그룹을 선택합니다.
- DB 인스턴스의 파라미터 그룹을 선택합니다.
- 편집을 선택합니다.
- 연결 제한 시간 파라미터를 검색한 다음, 값을 변경합니다.
참고: 값을 변경한 후 새 값을 테스트할 때 MySQL 오류 로그를 모니터링하십시오.
connect_timeout
connect_timeout에 더 높은 값을 설정하여 해당 값이 이 문제 발생을 줄이는지 테스트하십시오. connect_timeout 파라미터는 DB 인스턴스가 잘못된 핸드셰이크로 응답하기 전에 MySQL 서버 DB 인스턴스가 대기해야 하는 시간(초)을 정의합니다. 자세한 내용은 MySQL 웹 사이트의 connect_timeout을 참조하십시오.
interactive_timeout 및 wait_timeout
interactive_timeout 및 wait_timeout을 수정할 수도 있습니다. 이러한 파라미터에 대한 자세한 내용은 MySQL 웹 사이트의 wait_timeout 또는 interactive_timeout을 참조하십시오. 연결 풀링을 사용하는 애플리케이션(예: Java)에는 연결 풀 설정과 일치하는 제한 시간이 있어야 합니다.
max_allowed_packet
인스턴스가 대규모 쿼리, 대규모 BLOB(바이너리 대형 객체) 열 또는 긴 문자열을 관리해야 하는 경우 max_allowed_packet 값을 늘리십시오. 행에 max_allowed_packet 값보다 많은 데이터가 있으면 오류가 발생합니다. 자세한 내용은 MySQL 웹 사이트의 max_allowed_packet을 참조하십시오.
net_write_timeout 및 net_read_timeout
net_write_timeout 및 net_read_timeout 값을 늘립니다. net_write_timeout 및 net_read_timeout을 wait_timeout과 동일한 값으로 설정할 수 있습니다. 자세한 내용은 MySQL 웹 사이트의 net_write_timeout 및 net_read_timeout을 참조하십시오.
클라이언트 애플리케이션에서 mysql_close() 함수를 직접적으로 호출하여 Amazon RDS for MySQL 또는 Aurora MySQL 호환 연결이 제대로 종료되는지 확인합니다.
다른 문제 해결 방법 사용
‘Got an error reading communications packets’ 오류 메시지가 계속 표시되면 다음 작업 중 하나를 수행하십시오.
관련 정보
Amazon RDS DB 인스턴스에서 DB 연결이 끊긴 이유는 무엇입니까?
Aurora Serverless DB 클러스터의 로그를 보고 다운로드하려면 어떻게 해야 합니까?