평균 지연 시간이 정상인데 Amazon DynamoDB 최대 지연 시간 지표가 높게 나타나는 이유는 무엇인가요?

2분 분량
0

Amazon DynamoDB 워크로드에 대한 Amazon CloudWatch 지표를 살펴보면 최대 지연 시간 지표가 높습니다. 하지만 평균 지연 시간은 정상입니다.

해결 방법

CloudWatch 지표 SuccessfulRequestLatency를 분석할 때는 평균 대기 시간을 확인하는 것이 모범 사례입니다. 최대 지연 시간은 DynamoDB 테이블의 전반적인 지연 시간을 보여주는 것이 아니라, 해당 기간 동안 단일 요청에 걸린 최대 시간을 보여줍니다. 예를 들어 DynamoDB 테이블에서 특정 시점에 100개의 요청이 발생한 경우, 그중 99개의 요청은 10ms가 걸리고 하나만 100ms가 걸리더라도 최대 지연 시간 지표는 100ms가 됩니다.

DynamoDB는 백엔드 플릿에 수천 개의 노드가 있는 대규모 확장 배포 시스템입니다. 따라서 DynamoDB 테이블의 테이블스페이스는 여러 개의 파티션으로 이루어질 수 있으며, 각 파티션마다 백엔드 플릿에 여러 개의 복사본이 있을 수 있습니다. DynamoDB에 대한 API 호출을 실행하면 DynamoDB 서비스 엔드포인트가 호출을 수신한 다음 처리를 위해 백엔드 노드 중 하나로 호출을 라우팅합니다. 호출이 성공적으로 처리되면 DynamoDB는 결과를 클라이언트로 다시 라우팅합니다.

대부분의 경우 API 호출은 한 번의 시도에서 성공적으로 처리되며 클라이언트 측에서 약간의 지연 시간이 발생합니다. 하지만 백엔드 노드에서 다음과 같은 문제가 발생하면 첫 번째 시도가 실패할 수 있습니다.

  • 처리량이 많은 기간
  • 장애 조치
  • 파티션 분할
  • 연결 문제

이와 같은 경우 첫 번째 시도는 서버 측에서 제한 시간(5000ms)이 지난 후 실패 처리됩니다. 그런 다음 서버는 다른 노드에서 API 호출을 자동으로 재시도하며, 여러 번 재시도하게 되는 경우가 많습니다. API 호출이 성공적으로 처리되면 서버는 결과를 클라이언트에 반환합니다. 이 경우 해당 특정 요청의 지연 시간이 늘어나는 것을 볼 수 있습니다. 따라서 높은 최대 지연 시간 지표는 일반적으로 문제가 되지 않습니다. 특정 노드의 지연 시간이 일관되게 길게 나타나는 경우 DynamoDB 서비스는 해당 구성 요소를 백엔드 플릿에서 자동으로 제거합니다. 앞서 언급한 현지화된 실패 동작이 서비스 측에서 발생할 경우 일정 비율의 API 호출에 대해 지연 시간이 높아지는 것을 관찰할 수 있습니다. 이로 인해 관련 DynamoDB 테이블의 CloudWatch 지표에서 최대 SuccessfulRequestLatency가 높아지게 됩니다. 따라서 현지화된 실패로 인해 최대 지연 시간이 증가할 수 있지만 이 실패를 제어하기 위한 조치를 취할 필요는 없습니다.

하지만 지수 백오프 재시도를 사용한 빠른 실패를 통해 애플리케이션이 빠르게 반응하도록 구성할 수 있습니다. 이렇게 하면 새 요청이 새 노드에 도달할 때 더 빠른 결과를 얻게 됩니다. 자세한 내용은 지연 시간을 인식하는 Amazon DynamoDB 애플리케이션에 대한 AWS Java SDK HTTP 요청 설정 조정을 참조하세요.


관련 정보

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

지연 시간 지표 로깅

AWS 공식
AWS 공식업데이트됨 2년 전
댓글 없음

관련 콘텐츠