DynamoDB 테이블이 스로틀되고 있는 경우

최종 업데이트 날짜: 2020년 1월 9일

Amazon DynamoDB 테이블의 읽기 또는 쓰기 작업이 스로틀되고 있습니다. 이 현상이 발생하는 이유는 무엇이고, 어떻게 해결할 수 있습니까?

간략한 설명

DynamoDB 테이블의 각 파티션은 쓰기 용량 유닛 1,000개와 읽기 용량 유닛 3,000개로 하드 제한이 적용됩니다. 워크로드가 파티션에 고르게 분산되어 있지 않거나 워크로드가 짧은 시간에 높은 사용량을 기록할 경우(읽기 또는 쓰기 작업 급증) 테이블이 스로틀될 수 있습니다.

DynamoDB 적응형 용량은 트래픽이 높은 파티션에 자동으로 처리 용량을 높여줍니다. 그러나 각 파티션에는 여전히 하드 제한이 적용됩니다. 즉, 적응형 용량은 테이블 또는 파티션 설계와 관련된 큰 문제를 해결할 수 없습니다. 핫 파티션과 스로틀이 발생하지 않게 하려면 테이블과 파티션 구조를 최적화하십시오.

해결 방법

다음의 솔루션 중 하나를 구현하기 전에 Amazon CloudWatch Contributor Insights를 사용하여 테이블에서 가장 많이 액세스되고 스로틀되는 항목이 무엇인지 확인하십시오. 그런 다음, 사용 사례에 가장 적합한 해결책을 사용하여 스로틀을 해결하십시오.

  • 읽기 및 쓰기 작업을 테이블 전체에 고르게 분산합니다. 핫 파티션은 테이블의 전체 성능을 저하할 수 있습니다. 자세한 정보는 워크로드를 균일하게 분산하기 위한 파티션 키 설계를 참조하십시오.
  • 캐싱 솔루션을 구현합니다. 워크로드가 대부분 정적 데이터의 읽기 액세스에 사용된다면, 데이터를 데이터베이스에 보관하는 것보다 잘 설계된 캐시에 보관하는 것이 훨씬 빠르게 쿼리 결과가 전달됩니다. DynamoDB Accelerator(DAX)는 애플리케이션에 메모리 내에서 빠른 성능을 제공하는 캐싱 서비스입니다. Amazon ElastiCache를 사용할 수도 있습니다.
  • 오류 재시도 및 지수 백오프를 구현합니다. 지수 백오프는 재시도 사이의 대기 간격을 점차 늘려서 애플리케이션의 안정성을 개선할 수 있습니다. AWS SDK에는 이 로직이 내장되어 있습니다. AWS SDK를 사용하지 않는다면 지수 백오프를 수동으로 구현하는 것이 좋습니다. 자세한 내용은 AWS의 오류 재시도 횟수 및 지수 백오프를 참조하십시오.