更新的运行状况检查导致App Engine部署失败?

时间:2017-09-09 04:53:56

标签: google-app-engine google-cloud-platform

我们使用旧版本将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.

可能导致问题的原因是什么?我们如何调试这个? 是否可以回滚到遗留健康检查?

3 个答案:

答案 0 :(得分:4)

这通常是在应用程序仍在使用gcloud app deploy读取旧版运行状况检查标志和/或部署应用程序而不首先启用更新的运行状况检查时引起的。您可以通过以下方式查看:

1-确保您的app.yaml上不存在旧health_check标记。

2-运行gcloud beta app describe以查看splitHealthChecksfeatureSettings标志是否设置为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_checkliveness_checkreadiness_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