Amazon DynamoDB의 간헐적인 제한 시간 초과 오류를 해결하려면 어떻게 해야 합니까?

2분 분량
0

AWS SDK를 사용하여 Amazon DynamoDB와 상호 작용할 때 다음과 같은 간헐적인 연결 제한 시간 초과 또는 요청 제한 시간 초과 오류가 표시됩니다.

HTTP 요청을 실행할 수 없습니다. dynamodb.xx-xxxx-x.amazonaws.com:443 [dynamodb.us-east-1.amazonaws.com/x.xxx.xxx.x]에 연결하지 못했습니다. 연결 제한 시간이 초과되었습니다. com.amazonaws.SdkClientException: HTTP 요청을 실행할 수 없습니다. 요청 제한 시간 구성 전에 요청이 완료되지 않았습니다.

해결 방법

DynamoDB에 대한 API 호출을 수행하면 다음과 같은 상황이 발생합니다.

  1. 애플리케이션이 로컬 DNS 서버를 사용하여 DynamoDB 엔드포인트를 확인합니다.
  2. DynamoDB 엔드포인트의 IP 주소를 가져온 후 애플리케이션이 엔드포인트에 연결되고 API를 호출합니다.
  3. 엔드포인트가 이 호출을 백엔드 노드 중 하나로 라우팅합니다.

이 프로세스 중에 API 호출로 인해 간헐적으로 연결 제한 시간 초과 또는 요청 제한 시간 초과 오류가 발생할 수 있습니다. 대부분의 경우 제한 시간 초과 오류는 네트워크 문제 또는 클라이언트측의 잘못된 SDK 구성으로 인해 API 호출이 DynamoDB에 도달하기 전에 발생하는 클라이언트측 오류로 인해 발생합니다.

이러한 오류를 해결하려면 다음을 수행합니다.

  • 사용 사례 및 애플리케이션 SLA에 따라 SDK HTTP 클라이언트 파라미터를 조정합니다. connectionTimeout, requestTimeout, maxRetries를 조정하는 것 외에도 clientExecutionTimeout, socketTimeout을 조정할 수도 있습니다. ClientExecutionTimeout 파라미터는 발생할 수 있는 모든 재시도를 비롯하여 종단 간 작업을 수행하고 원하는 응답을 수신하는 데 소요된 총 최대 허용 시간을 나타냅니다. 이 값을 개별 requestTimeout 값보다 크게 설정해야 합니다. socketTimeout 파라미터는 HTTP 클라이언트가 이미 설정된 TCP 연결의 응답을 수신하기 위해 대기하는 최대 시간을 나타냅니다. 자세한 내용은 지연 시간을 인식하는 Amazon DynamoDB 애플리케이션에 대한 AWS Java SDK HTTP 요청 설정 조정을 참조하세요.
  • 트래픽을 일정하게 보내거나 연결을 재사용해야 합니다. 요청을 하지 않을 때는 클라이언트가 DynamoDB 테이블로 더미 트래픽을 보내도록 하는 것이 좋습니다. 또는 클라이언트 연결을 재사용하거나 연결 풀링을 사용할 수 있습니다. 이러한 기술은 내부 캐시를 따뜻하게 유지하므로 지연 시간을 줄이고 클라이언트 측에서 제한 시간 초과 오류를 방지하는 데 도움이 됩니다. 예를 들어 Node.js에서 연결 유지를 사용하여 연결 재사용을 참조하세요.
  • Amazon Virtual Private Cloud(VPC) 흐름 로그를 확인하여 오류가 발생했을 때 DynamoDB로 수신되는 트래픽이 있었는지 확인합니다. AWS X-Ray를 사용하여 애플리케이션의 지연 시간을 모니터링할 수도 있습니다.

AWS 공식
AWS 공식업데이트됨 2년 전