DynamoDB 테이블의 지연 시간이 길어지는 문제를 해결하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2020년 6월 16일

Amazon DynamoDB 요청에 대한 응답 시간이 증가합니다. 이 현상이 발생하는 이유는 무엇이며 해결하려면 어떻게 해야 합니까?

해결 방법

Amazon CloudWatch 지표 SuccessfulRequestLatency를 분석할 때는 평균 지연 시간을 확인하는 것이 모범 사례입니다. 지연 시간이 가끔 급증하는 것은 문제가 되지 않습니다. 그러나 평균 지연 시간이 길면 해결해야 할 근본적인 문제가 있는 것일 수 있습니다.

모든 DynamoDB 호출에 대한 지연 시간 값을 가져오려면 AWS SDK에 대한 지연 시간 지표 로깅을 활성화합니다. 이러한 지표는 지연 시간 증가의 원인을 식별하는 데 도움이 될 수 있습니다. DynamoDB 지연 시간 지표는 DynamoDB 또는 Amazon DynamoDB Streams 내의 활동만 측정한다는 점에 유의하십시오. 지연 시간 지표는 네트워크 지연 시간 또는 클라이언트 측 활동을 고려하지 않습니다.

참고: GetItemPutItem과 같은 대부분의 원자성 작업의 경우 한 자릿수 밀리초 단위의 평균 지연 시간을 예상할 수 있습니다. 쿼리스캔과 같은 비원자성 작업의 지연 시간은 결과 세트의 크기와 쿼리 조건 및 필터의 복잡성 등 다양한 요인에 따라 달라집니다.

지연 시간을 줄이려면 다음 전략 중 하나 이상을 고려하십시오.

  • 요청 제한 시간 설정 줄이기: 클라이언트 SDK 파라미터 requestTimeOutclientExecutionTimeout을 튜닝하여 시간 초과 및 실패를 대폭 앞당깁니다(예: 50ms 후). 이렇게 하면 클라이언트가 지정된 기간 후에 지연 시간이 긴 요청을 중단한 다음 일반적으로 첫 번째 요청보다 훨씬 빠르게 완료되는 두 번째 요청을 전송합니다. 제한 시간 설정에 대한 자세한 내용은 지연 시간 인식 Amazon DynamoDB 애플리케이션에 대한 AWS Java SDK HTTP 요청 설정 튜닝을 참조하십시오.
  • 클라이언트와 DynamoDB 엔드포인트 간 거리 줄이기: 글로벌로 분산된 사용자가 있는 경우 글로벌 테이블을 사용하는 것이 좋습니다. 글로벌 테이블을 사용하면 테이블을 사용할 수 있는 AWS 리전을 지정할 수 있습니다. 이렇게 하면 사용자의 지연 시간을 크게 줄일 수 있습니다.
  • 캐싱 사용: 트래픽이 읽기 집약적인 경우 DynamoDB Accelerator(DAX)와 같은 캐싱 서비스를 사용하는 것이 좋습니다. DAX는 DynamoDB를 위한 고가용성의 완전관리형 인 메모리 캐시로, 초당 수백만 건의 요청에서도 밀리초에서 마이크로초로 최대 10배 향상된 성능을 제공합니다.
  • 일정한 트래픽 전송 또는 연결 재사용: 요청을 보내지 않을 때는 클라이언트에서 더미 트래픽을 DynamoDB 테이블로 보내도록 하는 것이 좋습니다. 또는 클라이언트 연결을 재사용하거나 연결 풀링을 사용할 수 있습니다. 이러한 모든 기술은 내부 캐시를 웜 상태로 유지하여 지연 시간을 낮게 유지하는 데 도움이 됩니다.
  • 최종적 일관된 읽기 사용: 애플리케이션에 강력한 일관된 읽기가 필요하지 않다면 최종적 일관된 읽기 사용을 고려하십시오. 최종적 일관된 읽기는 비용이 저렴하며 지연 시간이 길어질 가능성이 낮습니다. 자세한 내용은 읽기 일관성을 참조하십시오.

이 문서가 도움이 되었습니까?

AWS에서 개선해야 할 부분이 있습니까?


도움이 필요하십니까?