2. Throughput provisionado excedido
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
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.
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.
Para tráfego intenso contínuo, considere as seguintes opções de ajuste de capacidade:
TableReadProvisionedThroughputExceeded
Quando isso ocorre
A taxa de consumo de leitura da aplicação excede as unidades de capacidade de leitura (RCUs) provisionadas configuradas para a tabela. É possível monitorar as métricas do CloudWatch em Diagnóstico e monitoramento comuns 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 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.
-
Habilite o ajuste de escala automático da capacidade de leitura em sua tabela.
-
-
Se o ajuste de escala automático estiver habilitado (o padrão para tabelas criadas no console):
TableWriteProvisionedThroughputExceeded
Quando isso ocorre
A taxa de consumo de gravação da aplicação excede as unidades de capacidade de gravação (WCUs) provisionadas configuradas para a tabela. É possível monitorar as métricas do CloudWatch em Diagnóstico e monitoramento comuns 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 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.
-
Habilite o ajuste de escala automático da capacidade de gravação em sua tabela.
-
-
Se o ajuste de escala automático estiver habilitado (o padrão para tabelas criadas no console):
IndexReadProvisionedThroughputExceeded
Quando isso ocorre
O consumo de leitura em um índice secundário global (GSI) excede as unidades de capacidade de leitura provisionadas (RCUs) do GSI. É possível monitorar as métricas do CloudWatch em Diagnóstico e monitoramento comuns 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 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.
-
Habilite o ajuste de escala automático da capacidade de leitura em seu GSI.
-
-
Se o ajuste de escala automático estiver habilitado (o padrão para tabelas criadas no console):
IndexWriteProvisionedThroughputExceeded
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. Isso causa controle de utilização de contrapressão nas gravações da tabela base. É possível monitorar as métricas do CloudWatch em Diagnóstico e monitoramento comuns 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 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.
-
Habilite o ajuste de escala automático da capacidade de gravação em seu GSI.
-
-
Se o ajuste de escala automático estiver habilitado (o padrão para tabelas criadas no console):
Diagnóstico e monitoramento comuns
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:
ReadProvisionedThroughputThrottleEventseWriteProvisionedThroughputThrottleEventsrastreiam quando as solicitações sofrem controle de utilização por esse motivo.ReadThrottleEventseWriteThrottleEventsmonitoram quando qualquer solicitação de leitura ou gravação excede a capacidade provisionada. -
Consumo de capacidade:
ConsumedReadCapacityUnitseConsumedWriteCapacityUnitsmostram o uso real. -
Capacidade provisionada:
ProvisionedReadCapacityUnitseProvisionedWriteCapacityUnitsmostram os limites configurados.
Procedimentos de resolução
Aumentar a capacidade de throughput da tabela
Use esse procedimento quando o ajuste de escala automático não estiver habilitado e você precisar de um aumento imediato de capacidade.
-
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
ReadCapacityUnits, 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
WriteCapacityUnits, que especifica o número máximo de gravações consumidas por segundo antes de o DynamoDB limitar as solicitações.
-
-
Verifique se as novas configurações de capacidade não excedem as cotas de throughput por tabela e se o consumo total da sua conta permanece abaixo das cotas de throughput por conta da sua região. Entretanto, se você estiver se aproximando desses limites, considere a possibilidade de mudar para o modo de capacidade sob demanda.
Configurar o ajuste de escala automático de tabela para ajustar a capacidade de leitura ou gravação de sua tabela ou GSI
Configure o ajuste de escala automático 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.
-
Habilite o ajuste de escala automático de capacidade de leitura, de capacidade de gravação ou de ambas em sua tabela ou GSI.
-
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.
-
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.
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
Use esse procedimento quando o ajuste de escala automático 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 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
Para ter informações gerais sobre como alternar entre os modos de capacidade, consulte Considerações ao alternar os modos de capacidade no DynamoDB. Consulte o Service Quotas para saber mais sobre restrições específicas ao alternar entre os modos.
Aumentar a capacidade de throughput do GSI
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.
-
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
ReadCapacityUnits, 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
WriteCapacityUnits, 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.
-
-
Garanta que a capacidade de throughput provisionado do GSI permaneça de acordo com as cotas de throughput por conta e por tabela.
Recursos adicionais
-
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
. -
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
. -
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
.