3. Limites da conta excedidos - Amazon DynamoDB

3. Limites da conta excedidos

As tabelas sob demanda não têm níveis de capacidade provisionada para gerenciar, mas o DynamoDB impõe limites de throughput em nível de conta para evitar a execução descontrolada e garantir o uso justo de recursos entre todos os clientes. Esses limites de conta por tabela servem como proteções ajustáveis, definidas para cada combinação de conta e região. Quando sua taxa de consumo de leitura ou gravação excede esses limites, o DynamoDB exibe um tipo de motivo de controle de utilização AccountLimitExceeded na respectiva exceção. Os limites padrão de conta por tabela se aplicam automaticamente quando as tabelas não têm configurações personalizadas definidas de throughput máximo. Opcionalmente, você pode definir as configurações de throughput máximo para melhorar o controle de custos e a previsibilidade ou solicitar aumentos de cota por meio do console do Cotas no Amazon DynamoDB se os requisitos da aplicação excederem os limites padrão.

O limite da conta excedeu as medidas de mitigação

Esta seção apresenta diretrizes de resolução para cenários de controle de utilização de limites de conta. Antes de usar este guia, identifique os motivos específicos de controle de utilização do 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, primeiro determine se uma ação é realmente necessária:

  • Avalie o impacto no desempenho: verifique se, apesar do controle de utilização, sua aplicação ainda está atendendo aos requisitos de desempenho. Muitas aplicações operam com sucesso nos limites ou próximo aos limites, especialmente durante operações ou migrações de dados em massa.

  • Analise os padrões de controle de utilização: se o controle de utilização for intermitente e sua aplicação lidar com novas tentativas de forma eficaz, os limites atuais podem ser suficientes para sua workload.

Se sua aplicação tiver um desempenho aceitável mesmo quando ocasionalmente atingir os limites da conta, você poderá optar por simplesmente monitorar a situação em vez de implementar alterações imediatas.

Se você determinar que o controle de utilização está causando problemas de desempenho ou de confiabilidade inaceitáveis, selecione um motivo específico de controle abaixo para encontrar as opções de mitigação recomendadas:

TableReadAccountLimitExceeded

Quando isso ocorre

O consumo de leitura da tabela excedeu a cota de throughput de leitura por tabela em nível de conta para sua região. É 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

Use as seguintes etapas para resolver esse controle de utilização:

  • Solicitar aumentos de cota:

    Solicite um aumento no limite de throughput de leitura por tabela (código de cota L-CF0CBE56). Para ver as etapas detalhadas sobre como enviar a solicitação, consulte Solicitar aumentos de cota por tabela.

TableWriteAccountLimitExceeded

Quando isso ocorre

O consumo de gravação da tabela excedeu a cota de throughput de gravação por tabela em nível de conta para sua região. É 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

Use as seguintes etapas para resolver esse controle de utilização:

  • Solicitar aumentos de cota: solicite um aumento no limite de throughput de gravação por tabela (código de cota L-AB614373). Para ver as etapas detalhadas sobre como enviar a solicitação, consulte Solicitar aumentos de cota por tabela.

IndexReadAccountLimitExceeded

Quando isso ocorre

As operações de leitura direcionadas a um índice secundário global (GSI) consomem mais throughput do que a cota de leitura por tabela da sua conta permite na sua região da AWS atual. A cota de throughput de leitura por tabela em nível de conta se aplica conjuntamente a uma tabela e a todos os respectivos GSIs. É 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

Escolha a resolução apropriada com base na distribuição de capacidade da sua conta:

IndexWriteAccountLimitExceeded

Quando isso ocorre

As operações de gravação na tabela base geram atualizações correspondentes em um GSI que, coletivamente, excedem a cota de throughput de gravação por tabela em nível de conta para sua região da AWS. Cada gravação em um item da tabela base que contém atributos indexados por um GSI aciona uma operação de gravação correspondente a esse GSI. Essas operações de gravação combinadas são contabilizadas em sua cota de throughput de gravação por tabela. Você pode monitorar as métricas do CloudWatch em Diagnóstico e monitoramento comuns para analisar os padrões e o tempo desses eventos de controle de utilização e identificar quais operações estão causando a atividade excessiva de gravação do GSI.

Abordagem de resolução

Escolha a resolução apropriada com base na distribuição de capacidade da sua conta:

Diagnóstico e monitoramento comuns

Ao solucionar problemas de eventos de controle de utilização de limite de conta excedido, várias métricas do CloudWatch podem ajudar a identificar se você está atingindo os limites por tabela ou em toda a conta e entender seus padrões de distribuição de capacidade.

Métricas essenciais do CloudWatch

Monitore estas métricas essenciais para diagnosticar o controle de utilização do limite da conta:

Procedimentos de resolução

Solicitar aumentos de cota por tabela

Se suas aplicações precisarem operar além dos limites atuais de throughput por tabela, você deverá enviar uma solicitação de aumento de cota usando o procedimento a seguir. Cada tabela do DynamoDB em sua conta da AWS (com todos os GSIs associados) está sujeita a essas cotas de throughput em uma região específica. Essas cotas representam a capacidade máxima de leitura ou gravação que qualquer tabela individual e os respectivos GSIs podem consumir conjuntamente e se aplicam de forma independente a cada tabela, e não como um total em todas as tabelas da sua conta.

Também é possível definir limites mais baixos por tabela ou por GSI definindo as respectivas configurações máximas de throughput sob demanda.

  1. Identifique a cota específica que precisa ser aumentada:

    • Limite de throughput de leitura por tabela (código de cota L-CF0CBE56): 40 mil RCUs padrão por tabela.

    • Limite de throughput de gravação por tabela (código de cota L-AB614373): 40 mil WCUs padrão por tabela.

  2. Use o console do AWS Service Quotas para solicitar um aumento:

    • Navegue até o serviço do DynamoDB no Service Quotas.

    • Encontre a cota apropriada usando o código da cota.

    • Solicite um aumento com base no pico de uso previsto.

  3. Forneça uma justificação para o aumento, como:

    • padrões de uso atuais e requisitos de pico de tráfego;

    • justificação comercial para o aumento da capacidade;

    • cronograma referente a quando o aumento de capacidade é necessário.

nota

Os aumentos de cota normalmente levam de 24 a 48 horas para serem processados. Planeje suas solicitações adequadamente e considere estratégias temporárias de mitigação enquanto aguarda a aprovação.

Otimizar as projeções e o design do GSI

Otimize as projeções e o design do índice secundário global (GSI) para reduzir o consumo de capacidade e melhorar o desempenho.

Estratégias de projeção seletiva

Se suas consultas precisam acessar apenas alguns recursos, é possível reduzir a quantidade de dados gravados no GSI quando os itens da tabela base mudam projetando somente esses recursos. Para obter detalhes sobre os tipos de projeção, consulte Projections for Global Secondary Indexes.

  1. Analise os padrões de consulta: revise os padrões de consulta da aplicação para identificar quais atributos são realmente acessados por meio do GSI.

  2. Use projeções seletivas: projete apenas os atributos que são realmente necessários nas consultas para reduzir o volume de gravação.

  3. Considere usar KEYS_ONLY: se suas consultas precisarem apenas dos atributos principais, use a projeção KEYS_ONLY para minimizar o volume de gravação.

  4. Contrabalançar as concessões entre leitura e gravação: projetar menos atributos reduz o consumo da capacidade de gravação, mas pode exigir leituras adicionais da tabela base.

Implementação de GSIs esparsos

Os GSIs esparsos contêm somente itens que têm o atributo indexado, em vez de todos os itens da tabela base. Isso reduz a densidade da partição e melhora o desempenho quando você consulta com frequência subconjuntos específicos de dados.

  1. Crie GSIs que incluam somente itens com valores de atributo específicos.

  2. Implemente a indexação condicional definindo somente o atributo da chave de partição do GSI nos itens que devem ser indexados.

  3. Use chaves compostas em GSIs esparsos (p. ex., status#timestamp) para distribuir ainda mais o tráfego no subconjunto de itens indexados.

Para ter mais informações sobre como implementar essas estratégias, consulte Práticas recomendadas para uso de índices secundários no DynamoDB.