Por que minha tabela do Amazon DynamoDB está sendo controlada?
As operações de leitura ou gravação na minha tabela provisionada do Amazon DynamoDB são limitadas. Ou recebo o seguinte erro quando executo operações de leitura ou gravação na minha tabela provisionada do DynamoDB: “ProvisionedThroughputExceededException.”
Breve descrição
A seguir estão os cenários comuns em que você pode enfrentar a limitação de sua tabela provisionada do DynamoDB:
- Sua tabela do DynamoDB tem capacidade provisionada adequada, mas a maioria das solicitações está controlada.
- Você ativou o AWS Application Auto Scaling para o DynamoDB, mas sua tabela do DynamoDB 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
Observação: para obter informações sobre métricas do DynamoDB, como WriteThrottleEvents e ReadThrottleEvents, que devem ser monitoradas durante eventos de limitação, consulte Métricas e dimensões do DynamoDB.
Com base no seu caso de uso, conclua as seguintes tarefas.
Sua tabela do DynamoDB tem capacidade provisionada adequada, mas a maioria das solicitações está 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 mesa tenha capacidade suficiente para atender seu tráfego. Em seguida, use o recuo exponencial para tentar novamente as solicitações limitadas. Se usar o AWS SDK, essa lógica será implementada por padrão. Para mais informações, consulte Tentativas de erro e recuo exponencial.
Observação: o DynamoDB não 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. Para obter mais informações, consulte Modo de capacidade provisionada e Como o Amazon DynamoDB lida com cargas pontiagudas em intervalos curtos?
Você ativou o AWS Application Auto Scaling para o DynamoDB, mas sua tabela do DynamoDB está sendo controlada
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 quando dois pontos de dados consecutivos de unidades de capacidade consumidas excedem o valor de utilização 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.
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 de API UpdateTable é invocada. A chamada de API 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. Não é uma prática recomendada usar o Application Auto Scaling para lidar com cargas de trabalho elevadas no DynamoDB. Em vez disso, mude para o modo sob demanda. Para mais informações, consulte Gerenciamento automático da capacidade de throughput com o ajuste de escala automático do DynamoDB.
Há uma partição dinâmica na sua tabela
No DynamoDB, uma chave de partição que não tem alta cardinalidade pode resultar em muitas solicitações que visam apenas algumas partições. Esse evento causa uma partição ativa. Uma partição dinâmica pode causar controle de utilização se os limites de partição de 3000 RCU e 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. Use essa ferramenta para identificar as chaves de partição acessadas com mais frequência e 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 Como escolher a chave de partição correta do DynamoDB.
Além disso, você pode implementar a fragmentação de gravação na tecla de atalho para aumentar a cardinalidade e permitir que a tecla de atalho abranja várias partições. Para obter mais informações, consulte Usar fragmentação de gravação para distribuir workloads uniformemente. Use o recuo exponencial para tentar novamente as solicitações limitadas. Se usar o AWS SDK, essa lógica será implementada por padrão. Para mais informações, consulte Tentativas de erro e recuo exponencial.
Quando você espera alto tráfego, é uma prática recomendada aumentar a capacidade provisionada para um valor alto. O aumento na capacidade provisionada aumenta o número de partições no back-end.
Observação: se você usar a ferramenta CloudWatch Contributor Insights para DynamoDB, haverá 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 da AWS. 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
Práticas recomendadas para projetar e usar chaves de partição de forma eficaz
![AWS OFICIAL](/static/images/aws.png)
Conteúdo relevante
- feita há 6 diaslg...
- Resposta aceitafeita há 4 diaslg...
- feita há 6 diaslg...
- feita há 20 diaslg...
- AWS OFICIALAtualizada há 7 meses
- AWS OFICIALAtualizada há um ano
- AWS OFICIALAtualizada há 5 meses
- AWS OFICIALAtualizada há 8 meses