【发布时间】:2020-01-03 15:04:47
【问题描述】:
我正在尝试为我的应用程序设置一个readiness_check。这是我app.yaml的相关部分:
readiness_check:
path: '/readiness_check'
check_interval_sec: 30
timeout_sec: 4
failure_threshold: 10
success_threshold: 1
app_start_timeout_sec: 300
我正在开发的项目是一个在 Express 上运行的 Node.js 应用程序。以下是我处理/readiness_check 端点的方式:
app
.get(['/readiness_check'], (req, res) => res.sendStatus(200))
如果没有配置readiness_check,我的部署过程会成功,我可以毫无问题地访问我的应用程序。但是,当我包含 readiness_check 时,该过程将失败并出现以下错误:
OperationError:错误响应:[4] 您的部署未能在分配的时间内变得健康,因此被回滚。如果您认为这是一个错误,请尝试调整“readiness_check”部分中的“app_start_timeout_sec”设置。
我检查了日志,我可以看到/readiness_check 最初返回了502(当应用程序仍在启动时),然后开始返回200 状态代码。手动使用curl 访问端点显示了相同的结果。但由于某种原因,GCP 仍然认为我的部署并不健康。
运行gcloud app describe 确认我已启用splitHealthChecks 功能。
我浏览了troubleshooting sections in the documentation,发现我没有启用servicecontrol.googleapis.com 和endpoints.googleapis.com 服务,所以我启用了它们,但这也无济于事。
我还在文档中看到了以下注释:
如果您检查应用程序的 nginx.health_check 日志,您可能会发现运行状况检查轮询发生的频率比您配置的要高,这是因为冗余的运行状况检查器也遵循您的设置。这些冗余的运行状况检查器是自动创建的,您无法对其进行配置。
这可能是一个不相关的问题,但我在我的应用程序日志中找不到nginx.health_check。我尝试搜索“nginx”文本,但没有看到任何与健康检查相关的内容。虽然在寻找“readiness_check”,但它确实向我展示了我上面提到的回复。
【问题讨论】:
-
您能否向我们展示您的完整
app.yaml文件以获取更多上下文? -
@LundinCast 当然!给你:gist.github.com/mvlabat/5a497471d4aa7faec7e091d2ecd11f98 还添加了主帖的链接
标签: google-app-engine google-cloud-platform