Solução de problemas de gerenciamento de capacidade no Amazon Keyspaces - Amazon Keyspaces (para Apache Cassandra)

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Solução de problemas de gerenciamento de capacidade no Amazon Keyspaces

Está tendo problemas com a capacidade de tecnologia sem servidor? Aqui estão alguns problemas comuns e como resolvê-los.

Erros de capacidade de tecnologia sem servidor

Esta seção descreve como reconhecer erros relacionados ao gerenciamento de capacidade de tecnologia sem servidor e como resolvê-los. Por exemplo, você poderá observar eventos de capacidade insuficiente quando seu aplicativo exceder a capacidade de throughput provisionada.

Como o Apache Cassandra é um software baseado em cluster projetado para ser executado em uma frota de nós, ele não tem mensagens de exceção relacionadas a recursos de tecnologia sem servidor, como capacidade de throughput. A maioria dos drivers só entende os códigos de erro que estão disponíveis no Apache Cassandra, então o Amazon Keyspaces usa esse mesmo conjunto de códigos de erro para manter a compatibilidade.

Para mapear os erros do Cassandra para os eventos de capacidade subjacentes, você pode usar CloudWatch a Amazon para monitorar as métricas relevantes do Amazon Keyspaces. Eventos de capacidade insuficiente que resultam em erros do lado do cliente podem ser categorizados nesses três grupos com base no recurso que está causando o evento:

  • Tabela – Se você escolher o modo de capacidade Provisionada para uma tabela e seu aplicativo exceder o throughput provisionado, você poderá observar erros de capacidade insuficiente. Para ter mais informações, consulte Modos de capacidade de leitura/gravação no Amazon Keyspaces.

  • Partição – Você poderá enfrentar eventos de capacidade insuficiente se o tráfego em uma determinada partição exceder 3.000 RCUs ou 1.000 WCUs. Recomendamos distribuir o tráfego uniformemente entre partições como uma prática recomendada. Para ter mais informações, consulte Modelagem de dados no Amazon Keyspaces (para Apache Cassandra).

  • Conexão – Você pode ter um throughput insuficiente se exceder a cota para o número máximo de operações por segundo, por conexão. Para aumentar o throughput, você pode aumentar o número de conexões padrão ao configurar a conexão com o driver. Para obter mais informações, consulte Balanceamento de carga e Ajuste do throughput máximo de consultas CQL.

Para determinar qual recurso está causando o evento de capacidade insuficiente que está retornando o erro do lado do cliente, você pode verificar o painel no console do Amazon Keyspaces. Por padrão, o console fornece uma visão agregada das CloudWatch métricas mais comuns relacionadas à capacidade e ao tráfego na seção Capacidade e métricas relacionadas na guia Capacidade da tabela.

Para criar seu próprio painel usando a Amazon CloudWatch, verifique as seguintes métricas do Amazon Keyspaces.

  • PerConnectionRequestRateExceeded: Solicitações para o Amazon Keyspaces que excedam a cota de taxa de solicitação por conexão. Cada conexão do cliente com o Amazon Keyspaces pode suportar até 3 mil solicitações de CQL por segundo. Você pode realizar mais de 3 mil solicitações por segundo criando várias conexões.

  • ReadThrottleEvents: Solicitações para Amazon Keyspaces que excedem a capacidade de leitura de uma tabela.

  • StoragePartitionThroughputCapacityExceeded: Solicitações para uma partição de armazenamento do Amazon Keyspaces que excedam a capacidade de throughput da partição. As partições de armazenamento do Amazon Keyspaces podem suportar até 1.000 WCU/WRU por segundo e 3000 RCU/RRU por segundo. Para mitigar estas exceções, recomendamos que reveja o seu modelo de dados para distribuir o tráfego de leitura/gravação em mais divisórias.

  • WriteThrottleEvents: Solicitações para Amazon Keyspaces que excedem a capacidade de gravação de uma tabela.

Para saber mais sobre CloudWatch, consulteMonitorando o Amazon Keyspaces com a Amazon CloudWatch. Para obter uma lista de todas as CloudWatch métricas disponíveis para o Amazon Keyspaces, consulte. Métricas e dimensões do Amazon Keyspaces

Estou recebendo erros de capacidade insuficientes NoHostAvailable do driver do meu cliente

Você está vendo exceções Read_Timeout ou Write_Timeout para uma tabela.

Tentar repetidamente gravar ou ler uma tabela do Amazon Keyspaces com capacidade insuficiente pode resultar em erros do lado do cliente que são específicos do driver.

Use CloudWatch para monitorar suas métricas de taxa de transferência provisionadas e reais e eventos de capacidade insuficientes para a tabela. Por exemplo, uma solicitação de leitura que não tem capacidade de throughput suficiente falha com uma exceção Read_Timeout e é publicada na métrica ReadThrottleEvents. Uma solicitação de gravação que não tem capacidade de throughput suficiente falha com uma exceção Write_Timeout e é publicada na métrica WriteThrottleEvents. Para ter mais informações sobre essas métricas, consulte Métricas e dimensões do Amazon Keyspaces.

Para resolver esses problemas, considere uma das opções a seguir.

Se você precisar aumentar a cota de capacidade padrão da sua conta, consulte Cotas para Amazon Keyspaces (para Apache Cassandra).

Você está vendo erros relacionados à capacidade excedida da partição.

O controle de utilização da partição pode ocorrer quando a capacidade da partição é excedida temporariamente (o que pode ser controlado automaticamente pela capacidade adaptativa ou pela capacidade sob demanda). Esse erro também pode indicar um problema com seu modelo de dados. As partições de armazenamento do Amazon Keyspaces podem suportar até 1.000 WCU/WRU por segundo e 3000 RCU/RRU por segundo. Para saber mais sobre como melhorar seu modelo de dados para distribuir o tráfego de leitura/gravação em mais partições, consulte Modelagem de dados no Amazon Keyspaces (para Apache Cassandra).

Exceções Write_Timeout também podem ser causadas por uma taxa elevada de operações de gravação simultâneas que incluem dados estáticos e não estáticos na mesma partição lógica. Se é esperado que o tráfego execute várias operações de gravação simultâneas que incluam dados estáticos e não estáticos na mesma partição lógica, recomendamos gravar dados estáticos e não estáticos separadamente. Gravar os dados separadamente também ajuda a otimizar os custos de throughput.

Você está vendo erros relacionados à taxa de solicitação de conexão excedida.

O controle de utilização da conexão pode ter sido causado por uma das seguintes causas.

  • Talvez você não tenha conexões suficientes configuradas por sessão.

  • Talvez você esteja obtendo menos conexões do que os pares disponíveis, porque não tem as permissões do endpoint da VPC configuradas corretamente. Para obter mais informações sobre as políticas de endpoint da VPC, consulte Como usar o endpoint da VPC para o Amazon Keyspaces.

  • Se você estiver usando um driver 4.x, verifique se a validação do nome do host está ativada. O driver habilita a verificação do nome do host TLS por padrão. Essa configuração faz com que o Amazon Keyspaces apareça como um cluster de nó único para o driver. Recomendamos que você desative a verificação do nome de host.

Recomendamos que você siga estas práticas recomendadas para garantir que suas conexões e seu throughput sejam otimizados:

  • Configure o ajuste do throughput de consultas CQL.

    O Amazon Keyspaces suporta até 3.000 consultas CQL por conexão TCP por segundo, mas não há limite no número de conexões que um driver pode estabelecer.

    A maioria dos drivers de código aberto do Cassandra estabelece um pool de conexões com o Cassandra e balanceia a carga das consultas sobre esse pool de conexões. O Amazon Keyspaces expõe 9 endereços IP emparelhados aos drivers. O comportamento padrão da maioria dos drivers é estabelecer uma única conexão com cada endereço IP emparelhado. Portanto, o throughput máximo de consultas CQL de um driver usando as configurações padrão será de 27.000 consultas CQL por segundo.

    Para aumentar esse número, recomendamos aumentar o número de conexões por endereço IP que seu driver mantém no grupo de conexões. Por exemplo, definir o máximo de conexões por endereço IP como 2 dobrará o throughput máximo do seu driver para 54.000 consultas CQL por segundo.

  • Otimize suas conexões de nó único.

    Por padrão, a maioria dos drivers Cassandra de código aberto estabelece uma ou mais conexões com cada endereço IP anunciado na tabela system.peers ao estabelecer uma sessão. No entanto, certas configurações podem fazer com que um driver se conecte a um único endereço IP do Amazon Keyspaces. Isso pode acontecer se o driver estiver tentando validar o nome de host SSL dos nós pares (por exemplo, drivers DataStax Java) ou quando estiver se conectando por meio de um VPC endpoint.

    Para obter a mesma disponibilidade e desempenho de um driver com conexões para vários endereços IP, recomendamos fazer o seguinte:

    • Aumente o número de conexões por IP para 9 ou mais, dependendo do throughput desejado do cliente.

    • Crie uma política de repetição personalizada que garanta que as novas tentativas sejam executadas no mesmo nó.

    • Se você usa endpoints da VPC, conceda à entidade IAM que é usada para se conectar ao Amazon Keyspaces permissões de acesso para consultar sua VPC para obter informações sobre o endpoint e a interface de rede. Isso melhora o balanceamento de carga e aumenta o throughput de leitura/gravação. Para ter mais informações, consulte Como preencher entradas da tabela system.peers com informações do endpoint da VPC de interface.

Estou recebendo erros de tempo limite de gravação durante a importação de dados

Você está recebendo um erro de tempo limite ao carregar dados usando o comando cqlsh COPY.

Failed to import 1 rows: WriteTimeout - Error from server: code=1100 [Coordinator node timed out waiting for replica nodes' responses] message="Operation timed out - received only 0 responses." info={'received_responses': 0, 'required_responses': 2, 'write_type': 'SIMPLE', 'consistency': 'LOCAL_QUORUM'}, will retry later, attempt 1 of 100

O Amazon Keyspaces usa as exceções ReadTimeout e WriteTimeout para indicar quando uma solicitação de gravação falha devido à capacidade de throughput insuficiente. Para ajudar a diagnosticar exceções de capacidade insuficiente, o Amazon Keyspaces publica as seguintes métricas na Amazon. CloudWatch

  • WriteThrottleEvents

  • ReadThrottledEvents

  • StoragePartitionThroughputCapacityExceeded

Para resolver erros de capacidade insuficiente durante um carregamento de dados, diminua a taxa de gravação por trabalhador ou a taxa total de ingestão e, em seguida, tente carregar as linhas novamente. Para ter mais informações, consulte Etapa 4: Definir configurações de cqlsh COPY FROM. Para uma opção de upload de dados mais robusta, considere usar o DSBulk, que está disponível no GitHub repositório. Para step-by-step obter instruções, consulteTutorial: Carregamento de dados no Amazon Keyspaces usando o DSBulk.

Não consigo ver o tamanho real do armazenamento de um espaço de chaves ou uma tabela

Você não consegue ver o tamanho real de armazenamento de um espaço de chaves ou uma tabela.

Você pode estimar o tamanho do armazenamento começando a calcular o tamanho da linha em uma tabela. Instruções detalhadas para calcular o tamanho da linha estão disponíveis emComo calcular o tamanho da linha no Amazon Keyspaces.