2016-06-16 2 views
3

Ich verwende AWS ELB. Nachdem ich den ELB-Graphen gesehen hatte, gab es wenige 5XX-Fehler. Ich aktivierte die Protokolle und erfuhr, dass eine der api call zu registrierten Instanzen Zeitlimit überschritten wurde, da der Fehler auf ELB-Protokolle 504 war. Ich überwachte erneut die registrierten Instanzen, wenn es eine 5XX Antwort wirft, aber es war nicht. Das Nginx-Keep-Alive-Zeitlimit ist auf 15s gesetzt und das Timeout von ELB ist 60s. Wenn also die Anfrage wirklich abgelaufen ist, sollte sie auf Instanzenebene und nicht auf ELB-Ebene abgelaufen sein. Kann jemand vorschlagen, was das mögliche Fehlerszenario sein könnte?AWS ELB wirft 5XX, aber die registrierten Instanzen werfen keine 5XX Fehler

+0

Haben Sie einen Eintrag in den Sicherheitsgruppen der Backend-Instanzen, der es dem ELB ermöglicht, eine Verbindung über den konfigurierten Port herzustellen? –

+0

@KarenB der Port ist 80, die für alle offen ist und die ELB wirft 5XX auf bestimmte API-Anrufe zu jeder Zeit. –

+0

Nginx würde keine 504 protokollieren, da 504 eine Zeitüberschreitung ist. Es klingt wie ein Kapazitätsproblem. Überprüfen Sie den Zustand Ihrer Instanz. Wenn Sie eine Datenbank abfragen, vergewissern Sie sich, dass die angeforderten Daten in angemessener Zeit zurückgegeben werden können. –

Antwort

1

Der 504 wird nicht von nginx an den ELB zurückgegeben. Der ELB gibt einen 504 zurück, da das Zeitlimit auf eine Antwort von der API-Instanz wartet. Dies bedeutet auch, dass nginx keinen HTTP-Statuscode für eine Anfrage zurückgeben kann, die noch nicht fertiggestellt wurde. Wie dieses Dokument sagt, sollte zum Beispiel die Keep-Alive-Zeit Ihrer Instanz mindestens der Größe des ELB-Timeouts entsprechen. http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/ts-elb-error-message.html#ts-elb-errorcodes-http504

Verwandte Themen