2. Throughput provisionado excedido - Amazon DynamoDB

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:

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:

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:

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:

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:

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.

  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 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.

  2. 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.

  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.

  2. 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.

  3. 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.

  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 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.

  2. 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