Por que minha tabela do Amazon DynamoDB está sendo controlada?

7 minuto de leitura
0

As operações de leitura ou gravação na minha tabela do Amazon DynamoDB estão sendo controladas. -ou- Estou recebendo o erro ProvisionedThroughputExceededException quando realizo uma operação de leitura ou gravação na minha tabela do DynamoDB.

Breve descrição

Estes são alguns dos problemas comuns de controle de utilização que você pode enfrentar:

  • Sua tabela do DynamoDB tem capacidade provisionada adequada, mas a maioria das solicitações está sendo controlada.
  • Você ativou o AWS Application Auto Scaling para o DynamoDB, mas sua tabela do DynamoDB está sendo controlada.
  • Sua tabela do DynamoDB está no modo de capacidade sob demanda, mas a tabela está sendo controlada.
  • Há uma partição dinâmica na sua tabela.
  • O tráfego da sua tabela está excedendo as cotas de throughput da sua conta.

Resolução

Para informações sobre métricas do DynamoDB que devem ser monitoradas durante eventos de controle de utilização, consulte DynamoDB metrics and dimensions (Métricas e dimensões do DynamoDB). Essas métricas podem ajudar você a localizar as operações que criam solicitações de controle de utilização e identificar a causa do controle. Use uma ou mais das seguintes opções de solução de problemas com base no seu caso de uso.

Sua tabela do DynamoDB tem capacidade provisionada adequada, mas a maioria das solicitações está sendo controlada

O DynamoDB reporta métricas em nível de minuto ao Amazon CloudWatch. As métricas são calculadas como a soma de um minuto e depois calculada a média. No entanto, os limites de taxa do DynamoDB são aplicados por segundo. Por exemplo, se você provisionou 60 unidades de capacidade de gravação para sua tabela do DynamoDB, poderá realizar 3.600 gravações em um minuto. No entanto, direcionar todas as 3600 solicitações em um segundo sem nenhuma solicitação pelo restante do minuto pode resultar em controle de utilização. O número total de unidades de capacidade de leitura ou de gravação por minuto pode ser menor do que o throughput provisionado para a tabela. No entanto, se todo o workload cair em alguns segundos, as solicitações poderão sofrer controle de utilização.

Para resolver esse problema, certifique-se de que sua tabela tenha capacidade suficiente para atender seu tráfego e tente as solicitações com controle de utilização novamente usando o recuo exponencial. Se você estiver usando o AWS SDK, essa lógica será implementada por padrão. Para mais informações, consulte Error retries and exponential backoff (Tentativas de erro e recuo exponencial).

Observação: o DynamoDB não necessariamente começa a controlar a utilização da tabela depois que a capacidade consumida por segundo excede a capacidade provisionada. Com o recurso de capacidade de expansão, o DynamoDB reserva uma parte da capacidade não utilizada para posteriores expansões de throughput para lidar com picos de uso.

Você ativou o AWS Application Auto Scaling, mas sua tabela ainda está sofrendo controle de utilização

O AWS Application Auto Scaling não é uma solução adequada para lidar com picos repentinos no tráfego com tabelas do DynamoDB. O Application Auto Scaling inicia um aumento de escala verticalmente somente quando dois pontos de dados consecutivos de unidades de capacidade consumidas excedem o valor de utilização desejado configurado em um intervalo de um minuto. O Application Auto Scaling escala automaticamente a capacidade provisionada somente quando a capacidade consumida é maior do que a utilização desejada por dois minutos consecutivos. Além disso, um evento de redução de escala verticalmente é iniciado quando 15 pontos de dados consecutivos da capacidade consumida no CloudWatch são inferiores à utilização desejada. Depois que o Application Auto Scaling é iniciado, uma chamada da API UpdateTable é invocada e pode levar alguns minutos para atualizar a capacidade provisionada para sua tabela ou índice do DynamoDB. O Application Auto Scaling exige pontos de dados consecutivos com valores de utilização desejados mais altos para aumentar a capacidade provisionada da tabela do DynamoDB. Durante esse período, todas as solicitações que excederem a capacidade provisionada da tabela sofrerão controle de utilização. Portanto, não é uma prática recomendada usar o Application Auto Scaling para lidar com picos de carga de trabalho no DynamoDB, e você pode considerar passar para o modo sob demanda nesse caso de uso. Para mais informações, consulte Gerenciamento automático da capacidade de throughput com o ajuste de escala automático do DynamoDB.

Sua tabela usa o modo de capacidade sob demanda, mas a tabela ainda está sofrendo controle de utilização

Quando a tabela usa o modo de capacidade sob demanda, a tabela não é controlada, desde que as seguintes condições sejam verdadeiras:

  • O padrão de acesso é distribuído uniformemente entre as partições para evitar problemas relacionados à partição dinâmica.
  • A tabela não excede o dobro do pico de tráfego anterior.

No caso de tabelas sob demanda, o DynamoDB aloca automaticamente mais capacidade à medida que seu volume de tráfego aumenta para garantir que seu workload não sofra controle de utilização. No entanto, o controle de utilização pode ocorrer se o volume de tráfego for mais do que o dobro do pico anterior em um período de 30 minutos. Para mais informações, consulte Peak traffic and scaling properties (Propriedades de pico de tráfego e escalabilidade).

Há uma partição dinâmica na sua tabela

No DynamoDB, uma chave de partição que não tem uma alta cardinalidade pode resultar em muitas solicitações direcionadas a apenas algumas partições e resultando em uma partição dinâmica. Uma partição dinâmica pode causar controle de utilização se os limites de partição de 3000 RCU ou 1000 WCU (ou uma combinação de ambos) por segundo forem excedidos.

Para encontrar os itens mais acessados e controlados em sua tabela, use o Amazon CloudWatch Contributor Insights. O Amazon CloudWatch Contributor Insights é uma ferramenta de diagnóstico que fornece uma exibição resumida das tendências de tráfego de suas tabelas do DynamoDB e ajuda você a identificar as chaves de partição acessadas com mais frequência. Com essa ferramenta, você pode monitorar continuamente os gráficos dos padrões de acesso aos itens da sua tabela. Uma partição dinâmica pode prejudicar o desempenho geral da sua tabela. Para evitar esse desempenho ruim, distribua as operações de leitura e gravação da maneira mais uniforme possível na tabela. Para mais informações, consulte Como designar chaves de partição para distribuir seu workload uniformemente e Choosing the right DynamoDB partition key (Como escolher a chave de partição correta do DynamoDB).

Observação: o uso da ferramenta CloudWatch Contributor Insights para o DynamoDB gera cobranças adicionais. Para mais informações, consulte CloudWatch Contributor Insights para faturamento do DynamoDB.

O tráfego da sua tabela está excedendo as cotas de throughput da sua conta

As cotas de throughput de leitura no nível da tabela e de throughput de gravação no nível da tabela se aplicam no nível da conta em qualquer região. Essas cotas se aplicam a tabelas com o modo de capacidade provisionada e o modo de capacidade sob demanda. Por padrão, a cota de throughput colocada em sua tabela é de 40.000 unidades de solicitações de leitura e 40.000 unidades de solicitações de gravação. Se o tráfego para sua tabela exceder essa cota, a tabela poderá sofrer controle de utilização. Para resolver esse problema, use o console do Service Quotas para aumentar a cota de throughput de leitura ou gravação no nível da tabela para sua conta.


Informações relacionadas

Como usar a fragmentação de gravação para distribuir workloads uniformemente

AWS OFICIAL
AWS OFICIALAtualizada há 2 anos