Ich habe eine Python Elastic Beanstalk-App mit Lastenausgleich. Hier ist der Pfad, den eine Benutzeranforderung auf dem Weg in die Elastic Beanstalk-App nimmt:
user -> Elastic Beanstalk ELB -> Elastic Beanstalk mod_wsgi
Das Problem:
Die ersten ~ 2-4 Anfragen user
nach eb deploy
einer neuen App-Version erzeugen 504 Fehler von der ELB.
Nach diesen ~ 2-4 Anfragen, die 504 erzeugen, ist alles in Ordnung! 200er rundum.
Wenn die 504s passieren, schaffen es Elastic Beanstalk mod_wsgi
laut Zero Requests bis zur App /var/httpd/access_log
. Ich sehe die 200er erst, nachdem die ELB beschlossen hat, wieder zu arbeiten.
Dinge, die ich ausprobiert habe und die nicht funktionierten:
- Ich habe das
Elastic Beanstalk ELB
Idle Timeout auf 300 Sekunden erhöht - Ich habe den
Elastic Beanstalk mod_wsgi
ApacheKeepAliveTimeout
auf 300 Sekunden erhöht , wie hier vorgeschlagen: http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/ts-elb-error-message.html
Man könnte sagen: "Lebe einfach mit den 504ern!"
Das eigentliche Problem ist jedoch, dass ich in meinem Produktionssetup CloudFlare
zwischen user
und habe Elastic Beanstalk ELB
. CloudFlare ist auf aggressiven Cache .css
und aggressive .js
Dateien eingestellt, da ich MD5-Hashes an statische Datei-URLs anhänge. Wenn Anforderungen für diese wichtigen Dateien mit 504 fehlschlagen, scheint CloudFlare diese Fehler als 404-Fehler zwischenzuspeichern. Weitere Anforderungen für diese Dateien 404 unterbrechen somit die visuelle Gestaltung der Site bei jeder Bereitstellung.
Bereitstellen des Elastic Beanstalk App erneut mit der gleichen App - Version wird das CloudFlare 404 Problem beheben. Dies ist keine gute Lösung. Ich möchte CloudFlare weiterhin verwenden, da dies ein hervorragendes transparentes CDN ergibt. Daher ist es auch keine Lösung, es loszuwerden.
Es ist schwer zu glauben, dass ich mit diesem Problem allein bin, aber Google, stackoverflow / serverfault und die AWS-Foren haben keine Lösungen oder sogar ähnliche Problemberichte geliefert. Ich hoffe, dass meine Beschreibung dieses Verhaltens bei jemandem hier eine Glocke läutet. Danke im Voraus.