我们使用旧版本将Google应用引擎运行状况检查更新为新版本,现在我们的部署失败了。项目中没有任何其他内容发生了变化。我们测试了默认设置,然后扩展检查以防万一。
这是错误:
ERROR: (gcloud.app.deploy) Error Response: [4] Your deployment has failed to become healthy in the allotted time and therefore was rolled back. If you believe this was an error, try adjusting the 'app_start_timeout_sec' setting in the 'readiness_check' section.
这是我们的app.yaml:
liveness_check:
check_interval_sec: 120
timeout_sec: 40
failure_threshold: 5
success_threshold: 5
initial_delay_sec: 500
readiness_check:
check_interval_sec: 120
timeout_sec: 40
failure_threshold: 5
success_threshold: 5
app_start_timeout_sec: 1500
不幸的是,无论配置如何,准备和活跃度检查都会丢失404.
可能导致问题的原因是什么?我们如何调试这个? 是否可以回滚到遗留健康检查?
答案 0 :(得分:4)
这通常是在应用程序仍在使用gcloud app deploy
读取旧版运行状况检查标志和/或部署应用程序而不首先启用更新的运行状况检查时引起的。您可以通过以下方式查看:
1-确保您的app.yaml上不存在旧health_check
标记。
2-运行gcloud beta app describe
以查看splitHealthChecks
下featureSettings
标志是否设置为true。
默认情况下,来自更新的运行状况检查的HTTP请求不会转发到您的应用程序容器。如果要将运行状况检查扩展到应用程序,请指定活动检查或准备检查的路径。
然后,您可以使用gcloud beta app update --split-health-checks --project [your-project-id]
启用更新的运行状况检查。有关详细信息,请参阅this public issue tracker或有关Updated Health Checks的文章。
答案 1 :(得分:1)
对于那些想要迁移到默认设置以进行拆分运行状况检查的用户,请按照以下步骤操作:
1)从app.yaml文件中删除health_check
,liveness_check
和readiness_check
部分
2)部署到较新的版本,这很重要。因此,例如,如果您当前的版本为production
,请在命令prod
gcloud app deploy --version [new-version-name]
答案 2 :(得分:0)
以我为例,我通过手动增加内存分配解决了这个问题?
resources:
cpu: 1
memory_gb: 2
disk_size_gb: 10
在Google论坛中找到了以下解决方案: https://groups.google.com/forum/#!topic/google-appengine/Po_-SkC5DOE