Como soluciono problemas de latência em chamadas ou solicitações para tarefas do Amazon ECS?

4 minuto de leitura
0

Quero solucionar o problema da minha aplicação Amazon Elastic Container Service (Amazon ECS) que demora para responder às solicitações.

Breve descrição

Seguem as causas comuns de alta latência em tarefas do ECS:

  • Alta utilização de CPU ou memória (RAM) em tarefas.
  • Problemas com as dependências da aplicação que são executadas dentro da aplicação.
  • Grande distância de rede entre clientes ou destinos locais e o ECS Task.
  • Problemas de conectividade de rede, excedentes.
  • Controle de utilização do volume do Amazon Elastic Block Store (Amazon EBS).

Para investigar e resolver esses problemas, primeiro tente isolar onde ocorre o atraso e, em seguida, conclua as etapas de resolução.

Resolução

Para solucionar problemas de alta latência em sua tarefa do ECS, conclua as seguintes etapas:

  1. Execute o comando a seguir para medir a resposta do primeiro byte e verificar se a resolução do DNS está lenta, o que pode causar latência:

    % curl -kso /dev/null -w "\n===============
    | DNS lookup: %{time_namelookup}
    | Connect: %{time_connect}| App connect: %{time_appconnect}
    | Pre-transfer: %{time_pretransfer}
    | Start transfer: %{time_starttransfer}
    | Total: %{time_total}
    | HTTP Code: %{http_code}\n===============\n" https://LOAD_BALANCER_DNS_NAME.com
    
    Example output:
    | DNS lookup: 0.035596
    | Connect: 0.063130
    | App connect: 0.159145
    | Pre-transfer: 0.159264
    | Start transfer: 0.190203
    | Total: 0.190722
    | HTTP Code: 200

    Observação: a saída do exemplo anterior está em intervalos de ms. É uma prática recomendada executar os testes iniciais de dentro da VPC para reduzir as variáveis envolvidas em diferentes caminhos de rede.

  2. Em seguida, ignore o balanceador de carga. Use um endereço IP de uma tarefa em execução conhecida para direcionar o curl anterior. Esse processo ajuda a isolar o componente que causa a latência.

  3. Se houver um Application Load Balancer, verifique se há valores extrapolantes na estatística média da métrica TargetResponseTime do Amazon CloudWatch.

    Se o valor for alto, você tem um problema nas tarefas ou, possivelmente, uma dependência da aplicação em conexões externas. Para mais informações, consulte Como soluciono problemas de aumento na métrica TargetResponseTime para um Application Load Balancer?

    Se houver um grande número de tarefas, ative e revise as entradas do log de acesso do seu Application Load Balancer para identificar as instâncias de back-end.

  4. Para confirmar problemas com o Application Load Balancer, revise os campos request_processing_time e response_processing_time nas entradas de log para ver os períodos de tempo excepcionalmente altos. Para mais informações, consulte Como soluciono problemas de alta latência no meu Application Load Balancer no Elastic Load Balancing? Se aplicar diretamente o comando curl no endereço IP da tarefa e receber uma resposta lenta, revise o CloudWatch Container Insights.

  5. Se as utilizações de CPU e memória estiverem abaixo de 90%, em média, sem picos, verifique se há dependências nas tarefas da aplicação que possam causar latência. As dependências incluem chamadas para recursos externos, como buckets do Amazon Simple Storage Service (Amazon S3), bancos de dados do Amazon Relational Database Service (Amazon RDS) ou outros serviços remotos da web.

  6. Se as chamadas externas fizerem parte do fluxo de trabalho esperado da aplicação, confirme com os desenvolvedores da aplicação se ele está fazendo chamadas síncronas para dependências externas. Ou bloqueie a aplicação até que ela receba respostas a essas chamadas. Para mais informações, consulte Gerenciar chamadas assíncronas.

  7. Se você hospedar em instâncias de contêiner do EC2, verifique se há sinais de uso extrapolante em volumes e interfaces de rede do Amazon EBS. Para mais informações, consulte Como soluciono problemas de desempenho de volume do EBS na minha instância do EC2? Se forem detectados sinais de controle de utilização do EBS, revise e aumente os IOPs provisionados pelo EBS e o tipo de throughput. Ou use uma opção diferente, como o armazenamento de instâncias ou o Elastic Fabric Adapter (EFA).

    Se você detectar sinais de controle de utilização da interface de rede, use um tipo de instância maior com mais largura de banda de rede. Ou use um tipo de instância de rede aprimorada que forneça um parâmetro avançado maior. Para mais informações, consulte Por que minha instância do Amazon EC2 excede os limites de rede quando a utilização média é baixa?

  8. Se você hospedar no AWS Fargate, verifique as métricas da interface de rede com um contêiner auxiliar de rede do Amazon ECS. Observe que você precisa implantar com uma nova definição de tarefa para adicionar um contêiner auxiliar.

AWS OFICIAL
AWS OFICIALAtualizada há um mês