Amazon DynamoDB 테이블에서 발생하는 긴 대기 시간 문제를 해결하려면 어떻게 해야 합니까?

3분 분량
0

Amazon DynamoDB 요청에 대한 응답 시간이 증가하고 있습니다.

해결 방법

DynamoDB 테이블에서 높은 지연 시간을 해결하려면 Amazon CloudWatch 지표 SuccessfulRequestLatency를 분석하고, 평균 지연 시간을 확인하십시오. 대기 시간이 가끔 급증하는 것은 문제의 원인이 아닙니다. 그러나 평균 대기 시간이 길면 해결해야 하는 근본적인 문제가 있을 수 있습니다.

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

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

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

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

관련 정보

AWS SDK for Java를 사용하여 지표 활성화

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