Amazon RDS PostgreSQL 또는 Aurora PostgreSQL DB 인스턴스에 연결할 때 ‘클라이언트에 데이터를 보낼 수 없음(could not send data to client)’ 또는 ‘클라이언트로부터 데이터를 수신할 수 없음(could not receive data from client)’이라는 오류 문제를 해결하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2021년 5월 4일

Amazon Relational Database Service(Amazon RDS) PostgreSQL 또는 Amazon Aurora PostgreSQL 호환 버전 DB 인스턴스를 쿼리하려고 했습니다. 그러나 쿼리를 하면 다음 오류 중 하나가 발생합니다.

  • ‘클라이언트에 데이터를 보낼 수 없음(could not send data to client)’
  • ‘클라이언트로부터 데이터를 수신할 수 없음(could not receive data from client)’

간략한 설명

Amazon RDS DB 인스턴스의 백엔드 프로세스가 클라이언트에서 전송하거나 수신할 수 없는 경우 백엔드 프로세스는 PostgreSQL 로그에 다음 오류 중 하나를 기록합니다.

  • ‘클라이언트에 데이터를 보낼 수 없음(could not send data to client)’
  • ‘클라이언트로부터 데이터를 수신할 수 없음(could not receive data from client)’

해결 방법

이러한 오류는 여러 가지 이유로 발생할 수 있습니다. 이 문제를 해결하려면 아래 단계를 검토하세요.

클라이언트의 상태 확인

먼저 클라이언트 프로세스의 상태를 확인하세요. 예를 들어 OOM으로 인해 클라이언트 프로세스가 중단된 경우 세션이 잘못 종료될 수 있습니다. 이 종료로 인해 이러한 오류 중 하나가 발생할 수 있습니다.

tcp_keepalives_idle and tcp_keepalives_interval 파라미터 단축

쿼리 처리 시간이 너무 길면 세션이 클라이언트에서 잘못 종료될 수 있습니다. 이 문제를 해결하려면 클라이언트의 시간 초과 설정을 늘립니다. 또한 tcp_keepalives_idletcp_keepalives_interval 파라미터를 줄여 백엔드 프로세스에서 클라이언트의 상태를 확인할 수도 있습니다. 자세한 내용은 DB 파라미터 그룹의 파라미터 수정을 참조하세요.

tcp_keepalives_idletcp_keepalives_interval의 기본 값을 확인하려면 psql과 같은 PostgreSQL 클라이언트를 사용하여 다음 명령을 실행합니다.

SELECT name, setting FROM pg_settings WHERE name LIKE 'tcp_keepalives_%'

연결 확인

쿼리 처리 시간이 적더라도 오류가 발생하는 경우 클라이언트와 DB 인스턴스 간의 연결을 확인합니다.

rdsadmin 세션에서 페일오버 후

rdsadmin 세션에서 페일오버 후 오류가 발생하면 오류를 무시할 수 있습니다.


PostgreSQL 오류 코드에 대한 PostgreSQL 설명서

연결 및 인증을 위한 PostgreSQL 문서

TCP keepalive 파라미터 설정

이 문서가 도움이 되었나요?


결제 또는 기술 지원이 필요하세요?