Por que minha métrica de latência máxima do Amazon DynamoDB está alta embora a latência média seja normal?

3 minuto de leitura
0

Quando reviso as métricas do Amazon CloudWatch para minhas workloads do Amazon DynamoDB, a métrica de latência máxima está alta. Porém, a latência média está normal.

Resolução

Uma prática recomendada ao analisar a métrica SuccessfulRequestLatency do CloudWatch é verificar a latência média. A latência máxima não dá uma ideia da latência geral em sua tabela do DynamoDB. Em vez disso, ela mostra o tempo máximo gasto por uma única solicitação nesse período. Por exemplo, se você tiver 100 solicitações em uma tabela do DynamoDB ao mesmo tempo, mesmo que 99 solicitações levem 10 ms e uma única solicitação leve 100 ms, a métrica de latência máxima será de 100 ms.

O DynamoDB é um sistema de distribuição em escala massiva, com milhares de nós na frota de back-end. Portanto, uma tabela do DynamoDB pode ter várias partições no tablespace, e cada partição tem várias cópias na frota de back-end. Quando você faz uma chamada de API para o DynamoDB, o endpoint de serviço do DynamoDB recebe sua chamada e a encaminha para processamento em um dos nós de back-end. Quando a chamada é processada com sucesso, o DynamoDB encaminha os resultados de volta para o seu cliente.

Na maioria dos casos, a chamada de API é processada com êxito em uma única tentativa e você observa uma pequena latência no lado do cliente. Porém, às vezes, a primeira tentativa falha se o nó de back-end estiver passando por:

  • Um período movimentado
  • Failover
  • Divisão de partição
  • Problemas de conectividade

Em casos como esses, a primeira tentativa falhará dentro de um tempo limite no lado do servidor (5.000 ms). Em seguida, o servidor tenta automaticamente refazer a chamada de API em outro nó, frequentemente várias vezes. O servidor retorna o resultado ao seu cliente quando a chamada de API é processada com êxito. Quando isso acontece, você observa uma latência elevada para essa solicitação específica. Portanto, geralmente uma métrica alta de latência máxima não é motivo de preocupação. Se o serviço do DynamoDB observar uma latência consistentemente alta de um nó, o serviço removerá automaticamente esse componente da frota de back-end. Você pode observar um nível elevado de latência para um determinado percentual de chamadas de API quando a falha localizada mencionada anteriormente ocorrer no lado do serviço. Isso se reflete em um alto nível de SuccessfulRequestLatency máximo nas métricas do CloudWatch para as tabelas relacionadas do DynamoDB. Por esse motivo, falhas localizadas podem aumentar sua latência máxima, mas você não precisa tomar nenhuma medida para controlar essa falha.

No entanto, você pode configurar seu aplicativo para reagir rapidamente, antecipando-se à falha com uma nova tentativa de recuo exponencial. Isso significa que a nova solicitação atingirá o novo nó e você obterá resultados mais rápidos. Para obter mais informações, consulte Ajustar configurações de solicitação HTTP do AWS Java SDK para aplicações do Amazon DynamoDB com reconhecimento de latência.


Informações relacionadas

Como solucionar problemas de alta latência em uma tabela do Amazon DynamoDB?

Registro de métricas de latência em log

AWS OFICIAL
AWS OFICIALAtualizada há 2 anos