Como soluciono problemas de alta latência em meu Classic Load Balancer do ELB?

4 minuto de leitura
0

Sofro com alta latência quando me conecto a um Classic Load Balancer do Elastic Load Balancing (ELB).

Breve descrição

A alta latência em um Classic Load Balancer ocorre pelos seguintes motivos:

  • Problemas de conectividade de rede
  • Configuração incorreta do Classic Load Balancer
  • Alta utilização de memória (RAM) em instâncias de back-end
  • Alta utilização da CPU em instâncias de back-end
  • Configuração incorreta do servidor web em instâncias de back-end
  • Problemas com dependências de aplicativos da web em execução em instâncias de back-end, como bancos de dados externos ou buckets do Amazon Simple Storage Service (Amazon S3)

Resolução

1.    Solucione problemas de conectividade de rede do Classic Load Balancer.

2.    Configure o Classic Load Balancer para seu caso de uso.

3.    Verifique os logs de acesso do Classic Load Balancer para determinar quais instâncias de back-end apresentam alta latência. Analise backend_processing_time para encontrar instâncias de back-end com problemas de latência.
Para verificar se o servidor de aplicativos web de uma instância de back-end apresenta alta latência, use curl para medir a resposta do primeiro byte:

[ec2-user@ip-192.0.2.0 ~]$ for X in `seq 6`; do curl -Ik -w "HTTPCode=%{http_code} TotalTime=%{time_total}\n" http://www.example.com/ -so /dev/null; done  
High Latency sample output:  
HTTPCode=200 TotalTime=2.452  
HTTPCode=200 TotalTime=1.035
Low latency sample output:  
HTTPCode=200 TotalTime=0.515  
HTTPCode=200 TotalTime=0.013

4.    Verifique a estatística média da métrica de latência do Amazon CloudWatch para o Classic Load Balancer. Se o valor for alto, provavelmente há um problema com as instâncias de back-end ou com os servidores de dependência de aplicativos.

5.    Verifique a estatística máxima da métrica de latência. Se o valor atingir ou exceder o valor do tempo limite de inatividade, as solicitações atingirão o tempo limite e resultarão em erros HTTP 504.

6.    Verifique os padrões na métrica de latência. Picos de métricas em intervalos regulares indicam problemas de desempenho com instâncias de back-end devido à sobrecarga de tarefas agendadas.

7.    Verifique a métrica SurgeQueueLength do CloudWatch para o ELB. Se as solicitações para o Classic Load Balancer excederem o valor máximo (1024), as solicitações serão rejeitadas e o balanceador de carga gerará um erro HTTP 503. A estatística de soma da métrica SpillOverCount mede o número total de solicitações rejeitadas. Para obter mais informações, consulte Como solucionar problemas de capacidade do Classic Load Balancer no ELB?

8.    Analise o Apache que está sendo processado em suas instâncias de back-end para verificar se há problemas de memória.

Exemplo de comando:

watch -n 1 "echo -n 'Apache Processes: ' && ps -C apache2 --no-headers | wc -l && free -m"

Exemplo de saída:

Every 1.0s: echo –n 'Apache Processes: ' && ps –C apache2 –no-
headers | wc -1 && free –m
Apache Processes: 27
          total     used     free     shared     buffers     cached
Mem:      8204      7445     758      0          385         4567
-/+ buffers/cache:  2402     5801
Swap:     16383     189      16194

9.    Verifique a métrica CPUUtilization do CloudWatch de suas instâncias de back-end. Procure uma alta utilização da CPU ou picos na utilização da CPU. Para uma alta utilização da CPU, atualize suas instâncias para um tipo de instância maior.

10.    Verifique a configuração MaxClient dos servidores web em suas instâncias de back-end. Essa configuração define quantas solicitações simultâneas a instância pode atender. Para instâncias com utilização adequada de memória e CPU que apresentam alta latência, aumente o valor de MaxClient.

Compare o número de processos que o Apache (httpd) gera com a configuração MaxClient. Se o número de processos do Apache frequentemente atingir o valor MaxClient, aumente o valor.

Exemplo de comando:

[root@ip-192.0.2.0 conf]# ps aux | grep httpd | wc -l 15

Exemplo de saída:

<IfModule prefork.c>  
StartServers         10  
MinSpareServers      5  
MaxSpareServers      10  
ServerLimit          15  
MaxClients           15  
MaxRequestsPerChild  4000  
</IfModule>

11.    Verifique as dependências que causam problemas de latência em suas instâncias de back-end.

Aqui estão algumas das dependências que podem causar problemas de latência:

  • Bancos de dados compartilhados, recursos externos, como buckets do S3
  • Conexões de recursos externos, como instâncias de conversão de endereços de rede (NAT)
  • Serviços web remotos
  • Servidores proxy

Informações relacionadas

Monitore seu Classic Load Balancer

AWS OFICIAL
AWS OFICIALAtualizada há um ano