Come posso risolvere i problemi di latenza elevata sul mio ELB Classic Load Balancer?
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
Contenuto pertinente
- AWS UFFICIALEAggiornata 2 anni fa
- AWS UFFICIALEAggiornata 2 anni fa
- AWS UFFICIALEAggiornata 2 anni fa
- AWS UFFICIALEAggiornata 2 anni fa