Como soluciono problemas de alta latência em meu Classic Load Balancer do ELB?
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
Conteúdo relevante
- AWS OFICIALAtualizada há 2 anos
- AWS OFICIALAtualizada há 3 anos
- AWS OFICIALAtualizada há 2 meses
- AWS OFICIALAtualizada há 2 anos