我有一个Python Elastic Beanstalk负载平衡应用程序。 以下是用户请求进入Elastic Beanstalk应用程序的path:
user -> Elastic Beanstalk ELB -> Elastic Beanstalk mod_wsgi
问题:
在eb deploy新的应用程序版本之后,来自user的前2-4个请求将从ELB生成504个错误。
经过这些〜2-4个生成504的请求,一切都很好! 到处都是200s。
当504s发生时,根据/var/httpd/access_log ,零请求将传递到Elastic Beanstalk mod_wsgi应用程序。 在ELB决定重新开始工作之后,我只看到了200年代。
我已经尝试过的事情没有奏效:
Elastic Beanstalk ELB空闲超时增加到了300秒 Elastic Beanstalk mod_wsgi apache KeepAliveTimeout增加到了300秒,如下所示: http : //docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/ts-elb-error-message.html 有人可能会说,“只是和504一起生活!”
但是,实际的问题是,在我的生产环境中, user和Elastic Beanstalk ELB之间有CloudFlare 。 CloudFlare设置为积极caching.css和.js文件,因为我将md5散列添加到静态文件URL。 当这些重要文件的请求失败时,CloudFlare似乎将这些失败caching为404。 对这些文件的进一步请求404,从而打破了每个部署的站点的视觉样式。
再次使用相同的应用程序版本部署Elastic Beanstalk应用程序将修复CloudFlare 404问题。 这不是一个好的解决scheme。 我想继续使用CloudFlare,因为它使得一个优秀的透明CDN,所以摆脱它也不是一个解决scheme。
很难相信我对这个问题一无所知,但是Google,stackoverflow / serverfault和AWS论坛还没有find任何解决scheme,甚至是类似的问题报告。 我希望我对这种行为的描述在这里与某人敲响。 提前致谢。