

# 4- 온디맨드 최대 처리량 초과
<a name="throttling-ondemand-capacity-exceeded-mitigation"></a>

[온디맨드](on-demand-capacity-mode.md) 테이블 또는 GSI를 구성할 때, 비용이 급증하는 것을 방지하거나 다운스트림 시스템이 과부하되는 것을 막기 위해 테이블 또는 인덱스 수준에서 최대 처리량 한도([https://docs.aws.amazon.com//amazondynamodb/latest/APIReference/API_OnDemandThroughput.html#DDB-Type-OnDemandThroughput-MaxReadRequestUnits](https://docs.aws.amazon.com//amazondynamodb/latest/APIReference/API_OnDemandThroughput.html#DDB-Type-OnDemandThroughput-MaxReadRequestUnits) 및 [https://docs.aws.amazon.com//amazondynamodb/latest/APIReference/API_OnDemandThroughput.html#DDB-Type-OnDemandThroughput-MaxWriteRequestUnits](https://docs.aws.amazon.com//amazondynamodb/latest/APIReference/API_OnDemandThroughput.html#DDB-Type-OnDemandThroughput-MaxWriteRequestUnits))를 선택적으로 설정할 수 있습니다. 최대 처리량에 대한 자세한 내용은 [온디맨드 테이블의 최대 처리량](on-demand-capacity-mode-max-throughput.md) 섹션을 참조하세요.

 읽기 또는 쓰기 사용량이 이러한 자체 설정 한도를 초과하면 한도를 초과할 추가 요청에 대해 신속한 스로틀링 응답이 발생합니다. DynamoDB는 `MaxOnDemandThroughputExceeded` 스로틀링 원인 유형의 예외를 반환하여 어떤 리소스가 처리량 한도에 도달했는지 표시합니다.

## 온디맨드 최대 처리량 초과 스로틀링
<a name="throttling-ondemand-maximum-exceeded"></a>

이 섹션에서는 온디맨드 최대 처리량 초과 스로틀링 시나리오에 대한 해결 방법 지침을 제공합니다. 이 가이드를 사용하기 전에 애플리케이션의 예외 처리에서 특정 스로틀링 사유를 확인하고 영향을 받은 리소스의 Amazon 리소스 이름(ARN)을 파악했는지 확인하세요. 스로틀링 사유 검색 및 스로틀된 리소스 식별에 대한 정보는 [DynamoDB 스로틀링 진단 프레임워크](throttling-diagnosing-workflow.md#throttling-diagnosing) 섹션을 참조하세요.

특정 스로틀링 시나리오를 살펴보기 전에 먼저 조치가 실제로 필요한지 고려하세요.
+ **최대 처리량 설정 평가:** 이러한 한도는 의도적으로 비용을 제어하거나 다운스트림 시스템을 보호하도록 구성되었습니다. `MaxOnDemandThroughputExceeded` 스로틀링 이벤트를 수신하는 경우, 한도가 설계된 대로 작동되고 있는 것입니다. 이러한 한도를 늘리는 것이 원 비용 제어 또는 시스템 보호 목표와 부합하는지 고려하세요.
+ **애플리케이션 영향 평가:** 스로틀링이 실제로 애플리케이션이나 사용자에게 문제를 일으키는지 판단합니다. 애플리케이션이 재시도를 효과적으로 처리하고 가끔 발생하는 스로틀링에도 성능 요구 사항을 충족한다면 현재 제한을 유지하는 것이 적절한 선택일 수 있습니다.
+ **트래픽 패턴 검토:** 스로틀링이 예상된 트래픽 패턴인지, 아니면 비정상적인 급증인지 분석합니다. 예측 가능하고 반복적으로 한도를 초과하는 트래픽 패턴의 경우 최대 처리량 설정 조정이 필요할 수 있습니다. 일시적인 급증의 경우 한도 상향보다 더 나은 요청 분산 전략 구현이 더 적합할 수 있습니다.

검토 후 최대 처리량 설정 조정이 필요하다고 판단되면, 아래의 특정 스로틀링 시나리오를 참조하여 대상 수정 옵션을 확인하세요.
+ [TableReadMaxOnDemandThroughputExceeded](#throttling-diagnostic-table-read-max-ondemand) 
+ [TableWriteMaxOnDemandThroughputExceeded](#throttling-diagnostic-table-write-max-ondemand)
+ [IndexReadMaxOnDemandThroughputExceeded](#throttling-diagnostic-index-read-max-ondemand) 
+ [IndexWriteMaxOnDemandThroughputExceeded](#throttling-diagnostic-index-write-max-ondemand) 

### TableReadMaxOnDemandThroughputExceeded
<a name="throttling-diagnostic-table-read-max-ondemand"></a>

**이 스로틀링이 발생하는 경우**  
온디맨드 테이블이 구성된 최대 읽기 처리량 용량을 초과했습니다. [공통 진단 및 모니터링](#ondemand-capacity-exceeded-diagnosis-monitoring)에서 CloudWatch 지표로 스로틀링 이벤트를 분석할 수 있습니다.

**문제 해결 옵션**  
스로틀링 이벤트를 해결하려면 다음 단계를 고려하세요.
+ **최대 처리량 한도 증가:** [DynamoDB 콘솔](https://console.aws.amazon.com/dynamodb), [AWS CLI](/amazondynamodb/latest/developerguide/AccessingDynamoDB.html#Tools.CLI) 또는 DynamoDB `[UpdateTable](https://docs.aws.amazon.com//amazondynamodb/latest/APIReference/API_UpdateTable.html)` API를 사용하여 영향을 받는 테이블의 [https://docs.aws.amazon.com//amazondynamodb/latest/APIReference/API_OnDemandThroughput.html#DDB-Type-OnDemandThroughput-MaxReadRequestUnits](https://docs.aws.amazon.com//amazondynamodb/latest/APIReference/API_OnDemandThroughput.html#DDB-Type-OnDemandThroughput-MaxReadRequestUnits) 값을 증가시킨 후 모니터링하고 조정합니다. 렇게 하면 스로틀링이 발생하기 전에 테이블이 더 높은 읽기 처리량을 처리할 수 있습니다.
+ **최대 한도 제거:** `MaxReadRequestUnits`를 `-1`로 설정하여 상한선을 제거하면 계정 수준 처리량 할당량까지 수요에 따라 확장할 수 있습니다. 이렇게 하면 사용자 지정 한도는 제거되지만 AWS의 계정 수준 보호 장치는 유지됩니다. 그러나 이 한도를 제거한 후에는 테이블이 계정 수준 할당량에 도달하기 전에 훨씬 더 많은 용량을 소비할 수 있으므로 지출을 면밀히 모니터링하는 것이 중요합니다.

### TableWriteMaxOnDemandThroughputExceeded
<a name="throttling-diagnostic-table-write-max-ondemand"></a>

**이 스로틀링이 발생하는 경우**  
온디맨드 테이블이 구성된 최대 쓰기 처리량 용량을 초과했습니다. [공통 진단 및 모니터링](#ondemand-capacity-exceeded-diagnosis-monitoring)에서 CloudWatch 지표로 스로틀링 이벤트를 분석할 수 있습니다.

**문제 해결 옵션**  
스로틀링 이벤트를 해결하려면 다음 단계를 고려하세요.
+ **최대 처리량 한도 증가:** [DynamoDB 콘솔](https://console.aws.amazon.com/dynamodb), [AWS CLI](/amazondynamodb/latest/developerguide/AccessingDynamoDB.html#Tools.CLI) 또는 DynamoDB `[UpdateTable](https://docs.aws.amazon.com//amazondynamodb/latest/APIReference/API_UpdateTable.html)` API를 사용하여 영향을 받는 테이블의 [https://docs.aws.amazon.com//amazondynamodb/latest/APIReference/API_OnDemandThroughput.html#DDB-Type-OnDemandThroughput-MaxWriteRequestUnits](https://docs.aws.amazon.com//amazondynamodb/latest/APIReference/API_OnDemandThroughput.html#DDB-Type-OnDemandThroughput-MaxWriteRequestUnits) 값을 증가시킨 후 모니터링하고 조정합니다.
+ **최대 한도 제거:** `MaxWriteRequestUnits`를 `-1`로 설정하여 상한선을 제거하면 계정 수준 처리량 할당량까지 수요에 따라 확장할 수 있습니다. 이렇게 하면 사용자 지정 한도는 제거되지만 AWS의 계정 수준 보호 장치는 유지됩니다. 그러나 이 한도를 제거한 후에는 테이블이 계정 수준 할당량에 도달하기 전에 훨씬 더 많은 용량을 소비할 수 있으므로 지출을 면밀히 모니터링하는 것이 중요합니다.

### IndexReadMaxOnDemandThroughputExceeded
<a name="throttling-diagnostic-index-read-max-ondemand"></a>

**이 스로틀링이 발생하는 경우**  
온디맨드 모드에서 GSI에 대한 읽기 요청이 GSI의 구성된 최대 읽기 처리량 용량을 초과했습니다. [공통 진단 및 모니터링](#ondemand-capacity-exceeded-diagnosis-monitoring)에서 CloudWatch 지표로 스로틀링 이벤트를 분석할 수 있습니다.

**문제 해결 옵션**  
스로틀링 이벤트를 해결하려면 다음 단계를 고려하세요.
+ **GSI 최대 처리량 한도 증가:** [DynamoDB 콘솔](https://console.aws.amazon.com/dynamodb), [AWS CLI](/amazondynamodb/latest/developerguide/AccessingDynamoDB.html#Tools.CLI) 또는 DynamoDB `[UpdateTable](https://docs.aws.amazon.com//amazondynamodb/latest/APIReference/API_UpdateTable.html)` API를 사용하여 영향을 받는 GSI의 [https://docs.aws.amazon.com//amazondynamodb/latest/APIReference/API_OnDemandThroughput.html#DDB-Type-OnDemandThroughput-MaxReadRequestUnits](https://docs.aws.amazon.com//amazondynamodb/latest/APIReference/API_OnDemandThroughput.html#DDB-Type-OnDemandThroughput-MaxReadRequestUnits) 값을 증가시킨 후 모니터링하고 조정합니다.
+ **GSI 최대 한도 제거:** GSI의 `MaxReadRequestUnits`를 `-1`로 설정하여 상한선을 제거하면 계정 수준 처리량 할당량까지 수요에 따라 확장할 수 있습니다. 이렇게 하면 사용자 지정 한도는 제거되지만 AWS의 계정 수준 보호 장치는 유지됩니다. 그러나이 한도를 제거한 후에는 지출을 면밀히 모니터링하는 것이 중요합니다.

### IndexWriteMaxOnDemandThroughputExceeded
<a name="throttling-diagnostic-index-write-max-ondemand"></a>

**이 스로틀링이 발생하는 경우**  
기본 테이블의 항목 업데이트는 GSI의 구성된 최대 쓰기 처리량 용량을 초과하는 쓰기를 온디맨드 모드의 GSI로 트리거하여 [백 프레셔 스로틀링](gsi-throttling.md)을 유발합니다. [공통 진단 및 모니터링](#ondemand-capacity-exceeded-diagnosis-monitoring)에서 CloudWatch 지표로 스로틀링 이벤트를 분석할 수 있습니다.

**문제 해결 옵션**  
스로틀링 이벤트를 해결하려면 다음 단계를 고려하세요.
+ **GSI 최대 처리량 한도 증가:** [DynamoDB 콘솔](https://console.aws.amazon.com/dynamodb), [AWS CLI](/amazondynamodb/latest/developerguide/AccessingDynamoDB.html#Tools.CLI) 또는 DynamoDB `[UpdateTable](https://docs.aws.amazon.com//amazondynamodb/latest/APIReference/API_UpdateTable.html)` API를 사용하여 영향을 받는 GSI의 [https://docs.aws.amazon.com//amazondynamodb/latest/APIReference/API_OnDemandThroughput.html#DDB-Type-OnDemandThroughput-MaxWriteRequestUnits](https://docs.aws.amazon.com//amazondynamodb/latest/APIReference/API_OnDemandThroughput.html#DDB-Type-OnDemandThroughput-MaxWriteRequestUnits) 값을 증가시킨 후 모니터링하고 조정합니다.
+ **GSI 최대 한도 제거:** GSI의 `MaxWriteRequestUnits`를 `-1`로 설정하여 상한선을 제거하면 계정 수준 처리량 할당량까지 수요에 따라 확장할 수 있습니다. 이렇게 하면 사용자 지정 한도는 제거되지만 AWS의 계정 수준 보호 장치는 유지됩니다. 그러나이 한도를 제거한 후에는 지출을 면밀히 모니터링하는 것이 중요합니다.

## 공통 진단 및 모니터링
<a name="ondemand-capacity-exceeded-diagnosis-monitoring"></a>

온디맨드 최대 처리량 초과 스로틀링 이벤트를 해결할 때, 여러 CloudWatch 지표들을 통해 근본 원인과 확장 패턴을 파악할 수 있습니다.

**필수 CloudWatch 지표**  
온디맨드 최대 처리량 초과로 인한 스로틀링을 진단하려면 다음 주요 지표들을 모니터링합니다.
+ **최대 처리량 스로틀링 이벤트:** [https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/metrics-dimensions.html#ReadMaxOnDemandThroughputThrottleEvents](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/metrics-dimensions.html#ReadMaxOnDemandThroughputThrottleEvents) 및 [https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/metrics-dimensions.html#WriteMaxOnDemandThroughputThrottleEvents](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/metrics-dimensions.html#WriteMaxOnDemandThroughputThrottleEvents)는 요청이 최대 한도를 초과하여 스로틀링되는 시점을 추적합니다. [https://docs.aws.amazon.com//amazondynamodb/latest/developerguide/metrics-dimensions.html#ReadThrottleEvents](https://docs.aws.amazon.com//amazondynamodb/latest/developerguide/metrics-dimensions.html#ReadThrottleEvents) 및 [https://docs.aws.amazon.com//amazondynamodb/latest/developerguide/metrics-dimensions.html#WriteThrottleEvents](https://docs.aws.amazon.com//amazondynamodb/latest/developerguide/metrics-dimensions.html#WriteThrottleEvents)는 읽기 또는 쓰기 요청이 프로비저닝된 용량을 초과하는 시점을 추적합니다.
+ **테이블 또는 글로벌 보조 인덱스에 대해 현재 구성된 최대 처리량:** [https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/metrics-dimensions.html#OnDemandMaxReadRequestUnits](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/metrics-dimensions.html#OnDemandMaxReadRequestUnits) 및 [https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/metrics-dimensions.html#OnDemandMaxWriteRequestUnits](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/metrics-dimensions.html#OnDemandMaxWriteRequestUnits)는 현재 최대 용량 한도를 표시합니다.
+ **실제 용량 사용량:** [https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/metrics-dimensions.html#ConsumedReadCapacityUnits](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/metrics-dimensions.html#ConsumedReadCapacityUnits) 및 [https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/metrics-dimensions.html#ConsumedWriteCapacityUnits](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/metrics-dimensions.html#ConsumedWriteCapacityUnits)는 실제 사용 패턴을 보여줍니다.

**분석 접근 방식**  
온디맨드 최대 처리량 초과 진단을 확인하려면 다음 단계를 따르세요.

1. 소비된 용량을 최대 용량 한도와 비교 - 소비량이 지속적으로 최대 한도에 근접하거나 초과하는지 확인합니다.

1. 스로틀링 이벤트 빈도와 시점을 검토하여 패턴을 식별합니다. 스로틀링 이벤트와 동시에 발생한 소비 용량이 급증하는 부분을 찾습니다.

1. [CloudWatch Contributor Insights](contributorinsights_HowItWorks.md)를 사용하여 가장 많은 용량을 소비하는 항목 또는 파티션 키를 식별합니다.