Come posso risolvere i problemi di latenza elevata sul mio ELB Classic Load Balancer?

4 minuti di lettura
0

Riscontro un'elevata latenza quando mi connetto a un Elastic Load Balancing (ELB) Classic Load Balancer.

Breve descrizione

L'elevata latenza su Classic Load Balancer si verifica per i seguenti motivi:

  • Problemi di connettività di rete
  • Configurazione errata del Classic Load Balancer
  • Elevato utilizzo della memoria (RAM) sulle istanze di backend
  • Elevato utilizzo della CPU sulle istanze di backend
  • Configurazione impropria del server web sulle istanze backend
  • Problemi con le dipendenze delle applicazioni Web in esecuzione su istanze di backend, come database esterni o bucket Amazon Simple Storage Service (Amazon S3)

Soluzione

1.    Risolvi i problemi di connettività di rete per il tuo Classic Load Balancer.

2.    Configura il Classic Load Balancer per il tuo caso d'uso.

3.    Controlla i log di accesso per Classic Load Balancer per determinare quali istanze di backend presentano una latenza elevata. Controlla target_processing_time per trovare istanze di backend con problemi di latenza.
Per verificare che il server di applicazioni Web di un'istanza di backend presenti un'elevata latenza, usa curl per misurare la risposta del primo 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.    Controlla la statistica media della metrica di latenza di Amazon CloudWatch per il tuo Classic Load Balancer. Se il valore è elevato, è probabile che ci sia un problema con le istanze di backend o i server di dipendenza delle applicazioni.

5.    Controlla la statistica massima della metrica Latenza. Se il valore soddisfa o supera il valore di timeout di inattività, le richieste di timeout generano errori HTTP 504.

6.    Controlla i modelli nella metrica Latenza. I picchi metrici a intervalli regolari indicano problemi di prestazioni con le istanze di backend a causa del sovraccarico derivante dalle attività pianificate.

7.    Controlla la metrica CloudWatch SurgeQueueLength per ELB. Se le richieste al Classic Load Balancer superano il valore massimo (1024), vengono rifiutate e il sistema di bilanciamento del carico genera un errore HTTP 503. La statistica sommatoria della metrica SpilloverCount misura il numero totale di richieste rifiutate. Per ulteriori informazioni, consulta Come posso risolvere i problemi di capacità di Classic Load Balancer in ELB?

8.    Controlla l'Apache che viene elaborato sulle tue istanze di backend per verificare la presenza di problemi di memoria.

Comando di esempio:

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

Output di esempio:

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.    Controlla la metrica CloudWatch CPUUtilization delle tue istanze backend. Cerca un elevato utilizzo della CPU o dei picchi nell'utilizzo della CPU. Per un elevato utilizzo della CPU, aggiorna le istanze a un tipo di istanza più grande.

10.    Controlla l'impostazione MaxClient per i server Web sulle tue istanze di backend. Questa impostazione definisce il numero di richieste simultanee che l'istanza può soddisfare. Per le istanze con un utilizzo appropriato della memoria e della CPU che presentano una latenza elevata, aumenta il valore MaxClient.

Confronta il numero di processi generati da Apache (httpd) con l'impostazione MaxClient. Se il numero di processi Apache raggiunge spesso il valore MaxClient, aumenta il valore.

Comando di esempio:

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

Output di esempio:

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

11.    Verifica le dipendenze che causano problemi di latenza sulle tue istanze di backend.

Ecco alcune delle dipendenze che possono causare problemi di latenza:

  • Database condivisi, risorse esterne, come i bucket S3
  • Connessioni a risorse esterne, come istanze Network Address Translation (NAT)
  • Servizi web remoti
  • Server proxy

Informazioni correlate

Monitorare il tuo Classic Load Balancer

AWS UFFICIALE
AWS UFFICIALEAggiornata un anno fa