Python AWS弹性豆茎健康检查问题

Python AWS弹性豆茎健康检查问题,python,django,amazon-web-services,deployment,amazon-elastic-beanstalk,Python,Django,Amazon Web Services,Deployment,Amazon Elastic Beanstalk,我的web应用程序是Django,web服务器使用Nginx,使用Docker image和Elastic Beanstalk进行部署 通常没有问题,但随着负载平衡器扩展EC2,我的web服务器变成了502坏网关 我检查了Elastic Beanstalk应用程序日志,大约16%的请求返回5xx错误,此时负载平衡器扩展EC2,导致web服务器转换到502坏网关状态,Elastic Beanstalk应用程序转换到降级状态 这是负载平衡器执行运行状况检查时的常见问题吗?如果没有,如何关闭健康检查

我的web应用程序是Django,web服务器使用Nginx,使用Docker image和Elastic Beanstalk进行部署

通常没有问题,但随着负载平衡器扩展EC2,我的web服务器变成了502坏网关

我检查了Elastic Beanstalk应用程序日志,大约16%的请求返回5xx错误,此时负载平衡器扩展EC2,导致web服务器转换到502坏网关状态,Elastic Beanstalk应用程序转换到降级状态

这是负载平衡器执行运行状况检查时的常见问题吗?如果没有,如何关闭健康检查

我附上了一个捕获的图像作为参考


据我所知,502错误网关只能通过手动检查网站上的主要链接以及是否可以通过简单的GET请求访问来缓解

就我的网站而言,我的登录页面和关于页面出现了一些问题(遗憾的是,这占了我网站的33%),这就是为什么上传到EC2后,我在健康检查时出现了5xx错误。我通过简单地使链接在服务器上工作来解决这个问题(有一些功能只在本地主机上运行,而不在AWS上运行,所以我修复了这个问题,并在运行状况检查中获得了OK状态)

我不认为删除健康检查有什么意义,因为它提供了有关您网站的重要信息,您可能不希望您的网站有无法访问的页面

跟踪日志以缩小问题范围


我希望您能找到解决方案。

在部署代码时,您将得到502,因为EC2实例未通过运行状况检查调用。您需要调整负载平衡运行状况检查默认设置,以便有足够的时间完成部署。如果在每次部署后重新启动服务器,请为部署留出更多时间

AWS负载平衡器使用您指定的路径,每N秒向每个注册实例发送一个运行状况检查请求。默认间隔秒数为30秒。如果运行状况检查失败N次(默认值为2次),则运行状况将变为降级或严重,具体取决于未响应的实例的百分比

  • 发送一个应返回200响应代码的请求。默认值为“/index.html”
  • 等待N秒后超时(默认值为5秒)
  • 间隔N秒后重试(默认为30秒)
  • 如果N个连续呼叫失败,请将运行状况状态更改为警告或严重(默认不健康阈值为2)
  • 连续成功调用N次后,将运行状况状态返回到OK(默认值为10)
  • 在默认设置下,如果任何web服务器实例停机超过一分钟(每次尝试两次,每次30秒),则视为停机。恢复正常状态需要5分钟(每30秒尝试10次)


    有关详细说明和配置选项,请查看AWS文档:

    感谢您编辑我的帖子。您找到修复程序了吗?您有应用程序监控吗?您知道实际抛出的错误是什么吗?@Seung这只是实例刚启动时抛出的错误吗?(一段时间后,运行状况检查是否正常?)。LB只删除坏实例。请您澄清这个问题,以及在什么情况下您会看到它。谢谢您的回复。已修复从当前服务器返回的状态500错误,并返回状态500错误,因为Nginx的access.log中没有请求历史记录。但是,ELB未通过运行状况检查,实例扩展,导致服务器进入502坏网关状态。我检查了EB环境日志,“环境运行状况已从正常转换为降级。50%的ELB请求在HTTP 5xx(3分钟前)下失败。”感谢您的回复。我试试看。