Solução de problemas de controle de utilização no modo provisionado - Amazon DynamoDB

Solução de problemas de controle de utilização no modo provisionado

Se o aplicativo exceder sua capacidade de configurações de throughput provisionado em uma tabela ou índice, ele estará sujeito à controle de utilização de solicitações. o controle de utilização impede que o seu aplicativo consuma muitas unidades de capacidade. Quando o DynamoDB controla a utilização de uma operação de leitura ou de gravação, ele exibe uma ProvisionedThroughputExceededException para o chamador. Em seguida, a aplicação pode executar a ação apropriada, como esperar por um curto intervalo antes de repetir a solicitação.

Para solucionar problemas que pareçam estar relacionados ao controle de utilização, uma primeira etapa importante é confirmar se o controle de utilização origina-se do DynamoDB ou da aplicação.

Este tópico discute como solucionar problemas comuns de controle de utilização no modo de capacidade provisionada. Veja a seguir alguns cenários comuns e as possíveis etapas para ajudar a resolvê-los.

A tabela do DynamoDB parece ter capacidade provisionada suficiente, mas as solicitações estão com controle de utilização

Isso pode ocorrer quando o throughput está abaixo da média por minuto e excede a quantidade disponível por segundo. O DynamoDB relata métricas apenas por minuto para o CloudWatch, que são então calculadas como a soma de um minuto e como média. Mas o próprio DynamoDB aplica limites de taxa por segundo. Portanto, se uma parte significativa desse throughput ocorrer em uma pequena parte desse minuto, como alguns segundos ou menos, as solicitações para o restante desse minuto poderão ser controladas.

Por exemplo, se tivermos provisionado 60 WCUs em uma tabela, ela poderá realizar 3.600 operações de gravação em um minuto. Mas se todas as 3.600 solicitações de WCU forem atendidas no mesmo segundo, o restante desse minuto será controlado.

Uma forma de resolver esse cenário pode ser adicionar um pouco de instabilidade e recuo exponencial às chamadas de API. Para obter mais informações, consulte esta publicação sobre recuo e oscilação.

O ajuste de escala automático está habilitado, mas as tabelas ainda estão com controle de utilização

Isso pode ocorrer durante picos repentinos no tráfego. O ajuste de escala automático pode ser acionado quando dois pontos de dados violam o valor de utilização de destino configurado em um período de um minuto. Portanto, o ajuste de escala automático pode ocorrer porque a capacidade consumida ficou acima da meta de utilização por dois minutos consistentes. Mas, se os picos tiverem mais de um minuto de intervalo, o ajuste de escala automático talvez não seja acionado.

Da mesma forma, um evento de redução de escala verticalmente pode ser acionado quando quinze pontos de dados consecutivos estão abaixo da meta de utilização. Nos dois casos, depois que o ajuste de escala automático é acionado, uma operação de API UpdateTable é invocada. Depois, pode levar alguns minutos para atualizar a capacidade provisionada da tabela ou do índice. Durante esse período, todas as solicitações que excederem a capacidade provisionada anterior das tabelas terão controle de utilização.

Em resumo, o ajuste de escala automático exige pontos de dados consecutivos, caso em que o valor de utilização alvo é violado para aumentar a escala de uma tabela do DynamoDB verticalmente. Por esse motivo, o ajuste de escala automático não é recomendado como solução para lidar com workloads irregulares. Consulte a documentação sobre custo do ajuste de escala automático para ter mais informações.

Uma tecla de atalho pode estar causando problemas de controle de utilização

No DynamoDB, uma chave de partição que não tem alta cardinalidade pode ocasionar muitas solicitações que visam apenas algumas partições. Se uma partição quente resultante ultrapassar os limites por partição de 3.000 RCUs ou 1.000 WCUs por segundo, isso pode ocasionar controle de utilização. A ferramenta de diagnóstico CloudWatch Contributor Insights (CCI) pode ajudar a depurar isso, fornecendo grafos de CCI para os padrões de acesso de cada item da tabela. Você pode monitorar continuamente as chaves acessadas com maior frequência das tabelas do DynamoDB e outras tendências de tráfego. Para ter mais informações sobre o CloudWatch Contributor Insights, consulte CloudWatch Contributor Insights para DynamoDB. Para ter mais informações, consulte Projetar chaves de partição para distribuir a workload no DynamoDB e Choosing the Right DynamoDB Partition Key.

Seu tráfego para a tabela está excedendo a cota de throughput em nível de tabela

As cotas de throughput de leitura e gravação no nível da tabela se aplicam no nível da conta em qualquer região. Essas cotas são utilizadas em tabelas com o modo de capacidade provisionada e sob demanda. Por padrão, a cota de throughput colocada na tabela é de 40 mil unidades de solicitações de leitura e 40 mil unidades de solicitações de gravação. Se o tráfego para a tabela exceder essa cota, poderá haver um controle de utilização da tabela. Para ter mais informações sobre como evitar que isso aconteça, consulte Monitoring DynamoDB for operational awareness.

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.