

# 2. Throughput provisionado excedido
<a name="throttling-provisioned-capacity-exceeded-mitigation"></a>

O controle de utilização de capacidade provisionada ocorre quando a taxa de consumo da aplicação excede as unidades de capacidade de leitura ou gravação (RCUs/WCUs) configuradas para tabelas ou índices secundários globais. Embora o DynamoDB ofereça capacidade de expansão para lidar com picos de tráfego ocasionais, solicitações prolongadas além dos limites provisionados resultam em controle de utilização. Quando isso acontece, o DynamoDB exibe um tipo de motivo `ProvisionedThroughputExceeded` de controle de utilização na exceção de controle. O motivo identifica se o problema está nas operações de leitura ou gravação e se ele afeta a tabela base ou um índice secundário global. 

O controle de utilização pode ocorrer independentemente de o ajuste de escala automático estar habilitado. O ajuste de escala automático se adapta aos aumentos no consumo, mas não responde imediatamente e é restrito pelos limites máximos de capacidade que você configura. Isso significa que o controle de utilização ainda pode ocorrer durante picos repentinos de tráfego ou quando o consumo excede seus limites máximos de ajuste de escala automático.

## O throughput provisionado excedeu as medidas de mitigação
<a name="throttling-provisioned-throughput-exceeded"></a>

Esta seção apresenta orientações sobre resolução para cenários de controle de utilização de capacidade provisionada. Antes de usar este guia, identifique o motivo específico do controle de utilização no tratamento de exceções da sua aplicação e determine o nome do recurso da Amazon (ARN) do recurso afetado. Para ter informações sobre como recuperar os motivos de controle de utilização e identificar os recursos com controle de utilização, consulte [Estrutura de diagnóstico de controle de utilização do DynamoDB](throttling-diagnosing-workflow.md#throttling-diagnosing).

Antes de se aprofundar em cenários específicos de controle de utilização, considere se o controle é realmente um problema que precisa ser resolvido:
+ O controle de utilização ocasional é normal e esperado em aplicações bem otimizadas do DynamoDB. Controle de utilização significa simplesmente que você está consumindo 100% do que provisionou. Se sua aplicação lida com o controle de utilização normalmente com novas tentativas e seu desempenho geral atende aos requisitos, o controle de utilização pode não exigir ação imediata.
+ No entanto, se o controle de utilização estiver causando uma latência inaceitável do lado do cliente, degradando a experiência do usuário ou impedindo que operações essenciais sejam concluídas em tempo hábil, prossiga com as opções de mitigação a seguir.

Quando precisar resolver problemas de controle de utilização, primeiro determine se o controle é causada por:
+ **Picos de tráfego temporários:** aumentos de curta duração no tráfego que excedem sua capacidade provisionada, mas não são prolongados. Isso requer estratégias diferentes das aplicadas a tráfego intenso contínuo.
+ **Alto tráfego contínuo:** workloads prolongadas que excedem consistentemente a capacidade provisionada.

Para picos de tráfego, considere as estratégias apresentadas no blog *Handle traffic spikes with Amazon DynamoDB provisioned capacity* em [Recursos adicionais](#throttling-additional-resources).

Para tráfego intenso contínuo, considere as seguintes opções de ajuste de capacidade:
+ [TableReadProvisionedThroughputExceeded](#throttling-table-read-provisioned) 
+ [TableWriteProvisionedThroughputExceeded](#throttling-table-write-provisioned)
+ [IndexReadProvisionedThroughputExceeded](#throttling-index-read-provisioned) 
+ [IndexWriteProvisionedThroughputExceeded](#throttling-index-write-provisioned) 

### TableReadProvisionedThroughputExceeded
<a name="throttling-table-read-provisioned"></a>

**Quando isso ocorre**  
A taxa de consumo de leitura da aplicação excede as [unidades de capacidade de leitura (RCUs) provisionadas](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_ProvisionedThroughput.html#DDB-Type-ProvisionedThroughput-ReadCapacityUnits) configuradas para a tabela. É possível monitorar as métricas do CloudWatch em [Diagnóstico e monitoramento comuns](#provisioned-capacity-exceeded-diagnosis-monitoring) para analisar o evento de controle de utilização.

**Abordagem de resolução**  
Considere estas estratégias para resolver o controle de utilização de capacidade de leitura:
+ **Mude para o modo de capacidade sob demanda:** considere [mudar a tabela para o modo sob demanda](#procedure-switch-ondemand) se você enfrentar controles de utilização frequentes devido a picos de tráfego. O modo sob demanda elimina as preocupações com provisionamento e escala automaticamente com a workload.
+ **Se a opção de manter o modo provisionado e o ajuste de escala automático não estiver habilitada:**
  + Considere a possibilidade de [aumentar a capacidade de leitura da tabela](#provisioned-capacity-exceeded-increase-table-throughput). 
  + [Habilite o ajuste de escala automático da capacidade de leitura](#provisioned-capacity-configure-autoscaling) em sua tabela.
+ **Se o ajuste de escala automático estiver habilitado (o padrão para tabelas criadas no console):** 
  +  [Otimize os parâmetros de ajuste de escala automático de leitura da sua tabela](#provisioned-capacity-optimize-autoscaling-settings).

### TableWriteProvisionedThroughputExceeded
<a name="throttling-table-write-provisioned"></a>

**Quando isso ocorre**  
A taxa de consumo de gravação da aplicação excede as [unidades de capacidade de gravação (WCUs) provisionadas](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_ProvisionedThroughput.html#DDB-Type-ProvisionedThroughput-WriteCapacityUnits) configuradas para a tabela. É possível monitorar as métricas do CloudWatch em [Diagnóstico e monitoramento comuns](#provisioned-capacity-exceeded-diagnosis-monitoring) para analisar o evento de controle de utilização.

**Abordagem de resolução**  
Considere estas estratégias para resolver o controle de utilização de capacidade de gravação:
+ **Mude para o modo de capacidade sob demanda:** considere [mudar a tabela para o modo sob demanda](#procedure-switch-ondemand) se você enfrentar controles de utilização frequentes devido a picos de tráfego. O modo sob demanda elimina as preocupações com provisionamento e escala automaticamente com a workload.
+ **Se a opção de manter o modo provisionado e o ajuste de escala automático não estiver habilitada:**
  + Considere a possibilidade de [aumentar a capacidade de gravação da tabela](#provisioned-capacity-exceeded-increase-table-throughput).
  + [Habilite o ajuste de escala automático da capacidade de gravação](#provisioned-capacity-configure-autoscaling) em sua tabela.
+ **Se o ajuste de escala automático estiver habilitado (o padrão para tabelas criadas no console):** 
  + [Otimize os parâmetros de ajuste de escala automático de gravação da sua tabela](#provisioned-capacity-optimize-autoscaling-settings).

### IndexReadProvisionedThroughputExceeded
<a name="throttling-index-read-provisioned"></a>

**Quando isso ocorre**  
O consumo de leitura em um índice secundário global (GSI) excede as [unidades de capacidade de leitura provisionadas](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_ProvisionedThroughput.html#DDB-Type-ProvisionedThroughput-ReadCapacityUnits) (RCUs) do GSI. É possível monitorar as métricas do CloudWatch em [Diagnóstico e monitoramento comuns](#provisioned-capacity-exceeded-diagnosis-monitoring) para analisar o evento de controle de utilização.

**Abordagem de resolução**  
Considere estas estratégias para resolver o controle de utilização de capacidade de leitura do GSI:
+ **Mude para o modo de capacidade sob demanda:** considere [mudar a tabela base para sob demanda](#procedure-switch-ondemand) se você experimentar controles de utilização frequentes devido a picos de tráfego. O modo sob demanda elimina as preocupações com provisionamento e escala automaticamente com a workload.
+ **Se a opção de manter o modo provisionado e o ajuste de escala automático não estiver habilitada:**
  + Considere a possibilidade de [aumentar a capacidade de leitura do GSI](#provisioned-capacity-exceeded-increase-index-throughput). 
  + [Habilite o ajuste de escala automático da capacidade de leitura](#provisioned-capacity-configure-autoscaling) em seu GSI.
+ **Se o ajuste de escala automático estiver habilitado (o padrão para tabelas criadas no console):**
  + [Otimize os parâmetros de ajuste de escala automático de leitura do seu GSI](#provisioned-capacity-optimize-autoscaling-settings).

### IndexWriteProvisionedThroughputExceeded
<a name="throttling-index-write-provisioned"></a>

**Quando isso ocorre**  
As atualizações dos itens na tabela base acionam gravações em um GSI que excedem a [capacidade de gravação provisionada do GSI](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_ProvisionedThroughput.html#DDB-Type-ProvisionedThroughput-WriteCapacityUnits). Isso causa [controle de utilização de contrapressão](gsi-throttling.md) nas gravações da tabela base. É possível monitorar as métricas do CloudWatch em [Diagnóstico e monitoramento comuns](#provisioned-capacity-exceeded-diagnosis-monitoring) para analisar o evento de controle de utilização.

**Abordagem de resolução**  
Considere estas estratégias para resolver o controle de utilização de capacidade de gravação do GSI:
+ **Mude para o modo de capacidade sob demanda:** considere [mudar a tabela base para sob demanda](#procedure-switch-ondemand) se você experimentar controles de utilização frequentes devido a picos de tráfego. O modo sob demanda elimina as preocupações com provisionamento e escala automaticamente com a workload.
+ **Se a opção de manter o modo provisionado e o ajuste de escala automático não estiver habilitada:**
  + Considere a possibilidade de [aumentar a capacidade de gravação do GSI](#provisioned-capacity-exceeded-increase-index-throughput).
  + [Habilite o ajuste de escala automático da capacidade de gravação](#provisioned-capacity-configure-autoscaling) em seu GSI.
+ **Se o ajuste de escala automático estiver habilitado (o padrão para tabelas criadas no console):**
  + [Otimize os parâmetros de ajuste de escala automático de gravação do seu GSI](#provisioned-capacity-optimize-autoscaling-settings).

## Diagnóstico e monitoramento comuns
<a name="provisioned-capacity-exceeded-diagnosis-monitoring"></a>

Ao solucionar erros de throughput, várias métricas do CloudWatch podem ajudar a identificar a causa raiz.

**Métricas essenciais do CloudWatch**  
Monitore estas métricas essenciais para diagnosticar o controle de utilização de capacidade provisionada:
+ **Eventos de controle de utilização:** [https://docs.aws.amazon.com//amazondynamodb/latest/developerguide/metrics-dimensions.html#ReadProvisionedThroughputThrottleEvents](https://docs.aws.amazon.com//amazondynamodb/latest/developerguide/metrics-dimensions.html#ReadProvisionedThroughputThrottleEvents) e [https://docs.aws.amazon.com//amazondynamodb/latest/developerguide/metrics-dimensions.html#WriteProvisionedThroughputThrottleEvents](https://docs.aws.amazon.com//amazondynamodb/latest/developerguide/metrics-dimensions.html#WriteProvisionedThroughputThrottleEvents) rastreiam quando as solicitações sofrem controle de utilização por esse motivo. [https://docs.aws.amazon.com//amazondynamodb/latest/developerguide/metrics-dimensions.html#ReadThrottleEvents](https://docs.aws.amazon.com//amazondynamodb/latest/developerguide/metrics-dimensions.html#ReadThrottleEvents) e [https://docs.aws.amazon.com//amazondynamodb/latest/developerguide/metrics-dimensions.html#WriteThrottleEvents](https://docs.aws.amazon.com//amazondynamodb/latest/developerguide/metrics-dimensions.html#WriteThrottleEvents) monitoram quando qualquer solicitação de leitura ou gravação excede a capacidade provisionada.
+ **Consumo de capacidade:** [https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/metrics-dimensions.html#ConsumedReadCapacityUnits](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/metrics-dimensions.html#ConsumedReadCapacityUnits) e [https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/metrics-dimensions.html#ConsumedWriteCapacityUnits](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/metrics-dimensions.html#ConsumedWriteCapacityUnits) mostram o uso real.
+ **Capacidade provisionada:** [https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/metrics-dimensions.html#ProvisionedReadCapacityUnits](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/metrics-dimensions.html#ProvisionedReadCapacityUnits) e [https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/metrics-dimensions.html#ProvisionedWriteCapacityUnits](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/metrics-dimensions.html#ProvisionedWriteCapacityUnits) mostram os limites configurados.

## Procedimentos de resolução
<a name="throttling-resolution-procedures"></a>

### Aumentar a capacidade de throughput da tabela
<a name="provisioned-capacity-exceeded-increase-table-throughput"></a>

Use esse procedimento quando o ajuste de escala automático não estiver habilitado e você precisar de um aumento imediato de capacidade.

1. Atualize a capacidade provisionada da tabela usando o console do DynamoDB, a AWS CLI ou o SDK:
   + **Para capacidade de leitura:** aumente o parâmetro [https://docs.aws.amazon.com//amazondynamodb/latest/APIReference/API_ProvisionedThroughput.html](https://docs.aws.amazon.com//amazondynamodb/latest/APIReference/API_ProvisionedThroughput.html), que especifica o número máximo de leituras altamente consistentes consumidas por segundo antes de o DynamoDB limitar as solicitações.
   + **Para capacidade de gravação:** aumente o parâmetro [https://docs.aws.amazon.com//amazondynamodb/latest/APIReference/API_ProvisionedThroughput.html](https://docs.aws.amazon.com//amazondynamodb/latest/APIReference/API_ProvisionedThroughput.html), que especifica o número máximo de gravações consumidas por segundo antes de o DynamoDB limitar as solicitações.

1. Verifique se as novas configurações de capacidade não excedem as [cotas de throughput por tabela](ServiceQuotas.md) e se o consumo total da sua conta permanece abaixo das [cotas de throughput por conta](ServiceQuotas.md) da sua região. Entretanto, se você estiver se aproximando desses limites, considere a possibilidade de [mudar para o modo de capacidade sob demanda](#procedure-switch-ondemand).

### Configurar o ajuste de escala automático de tabela para ajustar a capacidade de leitura ou gravação de sua tabela ou GSI
<a name="provisioned-capacity-configure-autoscaling"></a>

Configure o [ajuste de escala automático](AutoScaling.md) do DynamoDB para ajustar automaticamente a capacidade de leitura ou gravação com base nos padrões de tráfego. Você pode configurar o ajuste de escala automático de forma independente para tabelas e GSIs, com controles separados para unidades de capacidade de leitura e gravação. 

1. Habilite o ajuste de escala automático de capacidade de leitura, de capacidade de gravação ou de ambas em sua tabela ou GSI.

1. Defina a porcentagem de utilização pretendida com margem para picos de tráfego.
**nota**  
Uma porcentagem de utilização pretendida menor aumenta os custos e a frequência de ajuste de escala. Porcentagens de utilização pretendida abaixo de 40% podem causar excesso de provisionamento. Monitore os padrões de uso e os custos para contrabalançar desempenho e eficiência.

1. Defina limites de capacidade:
   + **RCUs/WCUs mínimas:** mantêm capacidade suficiente durante períodos de baixo tráfego.
   + **RCUs/WCUs máximas:** atendem a demandas de pico de tráfego e impedem eventos de ajuste de escala descontrolados.

Para obter orientação sobre como configurar e gerenciar o ajuste de escala automático do DynamoDB Auto, consulte [Gerenciar a capacidade de throughput automaticamente com o ajuste de escala automático do DynamoDB](AutoScaling.md).

**nota**  
O ajuste de escala automático normalmente leva vários minutos para responder a mudanças no tráfego. Para picos repentinos de tráfego, a capacidade de expansão da tabela oferece proteção imediata, enquanto o ajuste de escala automático se adapta aos picos. Configure a utilização pretendida com uma margem adequada para dar tempo para as operações de ajuste escala e preservar a capacidade de expansão no caso de demandas inesperadas.

### Otimizar as configurações de ajuste de escala automático de leitura ou gravação de sua tabela ou índice
<a name="provisioned-capacity-optimize-autoscaling-settings"></a>

Use esse procedimento quando o [ajuste de escala automático](AutoScaling.md) estiver habilitado, mas ainda houver controle de utilização. Você pode definir o ajuste de escala automático de forma independente para tabelas e índices secundários globais (GSIs), com controles separados para unidades de capacidade de leitura e gravação.
+ **Ajuste a utilização pretendida:** considere a possibilidade de reduzir a utilização pretendida da tabela ou dos GSIs para acionar o ajuste de escala antes que o controle de utilização ocorra. Monitore o tráfego depois de fazer esses ajustes. Consulte [Configurar o ajuste de escala automático de tabela para ajustar a capacidade de leitura ou gravação de sua tabela ou GSI](#provisioned-capacity-configure-autoscaling) para ter mais informações sobre o consumo de capacidade e as implicações de custo.
+ **Analise os limites de capacidade:** garanta que as configurações de capacidade mínima e máxima estejam alinhadas aos seus padrões reais de workload.

### Alternar para o modo de capacidade sob demanda
<a name="procedure-switch-ondemand"></a>

Para ter informações gerais sobre como alternar entre os modos de capacidade, consulte [Considerações ao alternar os modos de capacidade no DynamoDB](bp-switching-capacity-modes.md). Consulte o Service Quotas para saber mais sobre [restrições específicas ao alternar entre os modos](troubleshooting-throttling-diagnostics.md).

### Aumentar a capacidade de throughput do GSI
<a name="provisioned-capacity-exceeded-increase-index-throughput"></a>

Use esse procedimento quando o ajuste de escala automático não estiver habilitado em seu GSI e você precisar de um aumento imediato de capacidade.

1. Atualize a capacidade provisionada do GSI usando o console do DynamoDB, a AWS CLI ou o SDK:
   + **Para capacidade de leitura:** aumente o parâmetro [https://docs.aws.amazon.com//amazondynamodb/latest/APIReference/API_GlobalSecondaryIndexUpdate.html](https://docs.aws.amazon.com//amazondynamodb/latest/APIReference/API_GlobalSecondaryIndexUpdate.html), que especifica o número máximo de leituras que o GSI pode consumir por segundo antes de o DynamoDB limitar as solicitações. Observe que os GSIs permite apenas leituras finais consistentes.
   + **Para capacidade de gravação:** aumente o parâmetro [https://docs.aws.amazon.com//amazondynamodb/latest/APIReference/API_GlobalSecondaryIndexUpdate.html](https://docs.aws.amazon.com//amazondynamodb/latest/APIReference/API_GlobalSecondaryIndexUpdate.html), que especifica o número máximo de gravações que o GSI pode consumir por segundo antes de o DynamoDB limitar as solicitações.

1. Garanta que a capacidade de throughput provisionado do GSI permaneça de acordo com as [cotas de throughput por conta e por tabela](ServiceQuotas.md).

## Recursos adicionais
<a name="throttling-additional-resources"></a>
+  Para ter informações detalhadas sobre como lidar com picos de tráfego nas tabelas de capacidade provisionada do DynamoDB, inclusive várias estratégias, desde a utilização do ajuste de escala automático e da capacidade de expansão até o gerenciamento estratégico do controle de utilização, consulte [Handle traffic spikes with Amazon DynamoDB provisioned capacity](https://aws.amazon.com/blogs//database/handle-traffic-spikes-with-amazon-dynamodb-provisioned-capacity/). 
+ Para obter informações sobre como usar uma expressão cron para programar uma política de ajuste de escala, consulte [Optimize costs by scheduling provisioned capacity for Amazon DynamoDB](https://aws.amazon.com/blogs/database/optimize-costs-by-scheduling-provisioned-capacity-for-amazon-dynamodb/).
+ Para ter informações práticas sobre monitoramento e análise dos padrões de utilização de throughput de tabelas do DynamoDB no modo de capacidade provisionada, consulte [How to evaluate throughput utilization for Amazon DynamoDB tables in provisioned mode](https://aws.amazon.com/blogs/database/how-to-evaluate-throughput-utilization-for-amazon-dynamodb-tables-in-provisioned-mode/).