Help us improve the AWS re:Post Knowledge Center by sharing your feedback in a brief survey. Your input can influence how we create and update our content to better support your AWS journey.
Come posso risolvere i problemi relativi agli errori HTTP 502 del mio Application Load Balancer?
Desidero utilizzare le metriche e i log di accesso di Amazon CloudWatch per risolvere gli errori "Bad gateway" HTTP 502 che ricevo dal mio Application Load Balancer.
Risoluzione
Individua l'origine degli errori HTTP 502
Esistono diverse cause possibili per gli errori HTTP 502: Bad gateway. L'origine dell'errore può essere la destinazione o il bilanciatore del carico. Per identificare l'origine dell'errore, utilizza i log di accesso e le metriche di CloudWatch.
Utilizza le metriche di CloudWatch
Se la metrica HTTPCode_ELB_502_Count contiene punti dati, l'origine dell'errore è il bilanciatore del carico. Se la metrica HTTPCode_Target_5XX_Count contiene punti dati, l'origine dell'errore è la destinazione.
Utilizza i log di accesso
Se elb_status_code è "502" e target_status_code è "-", l'origine dell'errore è il bilanciatore del carico. Se elb_status_code è "502" e target_status_code + "502", l'origine dell’errore è la destinazione.
Risolvi i problemi relativi agli errori HTTP 502
Per individuare la causa, filtra i log di accesso per **elb_status_code = **** e **target_status_code"502". Quindi applica la risoluzione del problema che riscontri.
Il bilanciatore del carico riceve un messaggio TCP RST dalla destinazione quando tenta di stabilire una connessione
Quando stabilisci una connessione, potresti ricevere un messaggio TCP RST dalla destinazione. Il messaggio viene visualizzato quando il bilanciatore del carico non riesce a stabilire un handshake TCP a 3 vie con la destinazione. Di conseguenza, il bilanciatore del carico non può inoltrare la richiesta dell'utente alla destinazione.
Controlla nella metrica TargetConnectionErrorCount se sono presenti punti dati indicanti che la destinazione rifiuta le connessioni dal bilanciatore del carico con un messaggio TCP RST.
Verifica nei log di accesso se i campi request_processing_time, target_processing_time e response_processing_time sono tutti impostati sul valore -1. Quando imposti il valore su**-1**, il bilanciatore del carico non può inviare la richiesta alla destinazione perché devi connetterlo.
Di seguito è riportato un esempio di voce del log di accesso con request_processing_time, target_processing_time e response_processing_time impostati su -1:
http 2022-04-15T16:52:50.757968Z app/my-loadbalancer/50dc6c495c0c9188 192.168.131.39:2817 10.0.0.1:80 -1 -1 -1 502 - 86 155 "GET http://example.com:80/ HTTP/1.1" "curl/7.51.0" - - arn:aws:elasticloadbalancing:us-east-1:123456789012:targetgroup/my-targets/73e2d6bc24d8a067" Root=1-58337262-36d228ad5d99923122bbe354"
**Il bilanciatore del carico riceve una risposta inaspettata dalla destinazione, ad esempio **, quando tenta di connettersi"ICMP Destination unreachable (Host unreachable)"
Imposta i campi request_processing_time, target_processing_time e response_processing_time nei log di accesso sul valore -1. Quindi verifica che le sottoreti del bilanciatore del carico consentano il traffico verso le destinazioni sulla porta di destinazione.
La destinazione ha chiuso la connessione con un messaggio TCP RST o TCP FIN mentre il bilanciatore del carico aveva una richiesta in sospeso verso la destinazione
Il bilanciatore del carico riceve una richiesta e la inoltra alla destinazione. La destinazione inizia a elaborare la richiesta, ma chiude troppo presto la connessione con il bilanciatore del carico. Ciò si verifica quando la durata configurata per keep-alive timeout sulla destinazione è inferiore al valore del timeout per inattività del bilanciatore del carico. Assicurati che la durata configurata per timeout keep-alive sia maggiore del valore del timeout per inattività.
La risposta della destinazione non è conforme o contiene intestazioni HTTP non valide
Per risolvere i problemi relativi alla risposta della destinazione, esegui un'acquisizione di pacchetti sulla destinazione per l'intervallo di tempo in cui si è verificato il problema.
Per eseguire un'acquisizione di pacchetti per Linux, esegui il seguente comando:
sudo tcpdump -i any -w filename.pcap
Importante: se l'istanza di destinazione ha una grande quantità di traffico, il file Packet Capture (PCAP) generato dalla raccolta tcpdump potrebbe influire sullo spazio su disco. Una grande quantità di traffico può influire anche sui servizi dell'istanza di destinazione.
Per Microsoft Windows, scarica e utilizza l'applicazione Wireshark disponibile sul sito web di Wireshark.
Per istruzioni sull'utilizzo di tcpdump per testare esempi di acquisizione di pacchetti, consulta Come posso risolvere i problemi relativi alle prestazioni di rete tra le istanze EC2 Linux o Windows in un VPC e un host on-premise tramite il gateway Internet?
Il bilanciatore del carico rileva un errore di handshake SSL quando si connette a una destinazione
La connessione TCP dal bilanciatore del carico al listener HTTPS della destinazione ha esito positivo, ma il successivo handshake SSL riscontra un errore. Di conseguenza, il bilanciatore del carico non può inoltrare la richiesta alla destinazione.
Se il gruppo di destinazione utilizza il protocollo HTTPS, esegui un'acquisizione di pacchetti sulla destinazione per l'intervallo di tempo in cui si è verificato il problema.
Il server deve utilizzare una suite di crittografia TLS supportata dalla policy di sicurezza utilizzata dal bilanciatore del carico per le connessioni backend.
Il periodo di ritardo per l'annullamento della registrazione per una richiesta gestita da una destinazione con registrazione annullata è scaduto
Verifica negli eventi di CloudTrail la presenza di un'azione API DeregisterTargets nell'intervallo di tempo in cui si è verificato il problema. Se la registrazione della destinazione è stata annullata troppo presto, si verifica un errore HTTP 502. Per risolvere il problema, aumenta il periodo di ritardo per l'annullamento della registrazione in modo che le operazioni lunghe possano essere completate senza errori.
Risolvi gli errori HTTP 502 quando la destinazione è una funzione Lambda
Per le richieste a una funzione AWS Lambda che si concludono con esito negativo, controlla i codici dei motivi di errore di Lambda nel campo error_reason dei log di accesso del bilanciatore del carico.
La destinazione è una funzione Lambda e il corpo della risposta supera 1 MB
Per individuare il problema, controlla se esiste un punto dati per la metrica LambdaUserError. Oppure verifica se il campo error_reason nel log di accesso del bilanciatore del carico è impostato su LambdaResponseTooLarge.
Per risolvere il problema, aggiorna il codice Lambda e aggiungi la logica di gestione degli errori.
La destinazione è una funzione Lambda che non ha risposto entro il timeout configurato
Per individuare il problema, controlla se esiste un punto dati per la metrica LambdaUserError. Oppure verifica se il campo error_reason nel log di accesso del bilanciatore del carico è impostato su LambdaUnhandled.
La destinazione è una funzione Lambda che ha restituito un errore o Lambda ha limitato la funzione
Per verificare se Lambda ha limitato la funzione, controlla la presenza di un punto dati per la metrica Throttles. Se Lambda ha limitato la funzione, utilizza AWS Service Quotas per richiedere un aumento della quota per l'esecuzione simultanea di Lambda.
Per ulteriori informazioni, consulta Understanding AWS Lambda’s invoke throttling limits (Limiti di invocazione di AWS Lambda).
- Argomenti
- Networking & Content Delivery
- Lingua
- Italiano
Video correlati

