将新版本部署到 App Engine 时,路线 /_ah/stop 需要 500 秒

问题描述 投票:0回答:2

部署新版本的应用程序时,我们在请求日志 (

projects/my-project/logs/appengine.googleapis.com%2Frequest_log
) 中看到许多错误日志,端点的状态代码为 500
/_ah/stop
。这些有消息“进程终止,因为后端已停止。”。

这会在我们的警报中产生噪音,并表明出现了问题。它似乎也同时与其他 5xx 响应相关。

奇怪的是,我们应用程序的日志记录表明该应用程序收到了请求并以 200 状态进行响应。我们尝试为

/_ah/stop
添加一个仅返回 200 的处理程序,因为我们在关闭时没有特殊的清理工作要做。

google-app-engine google-cloud-platform
2个回答
0
投票

当 App Engine 实例关闭时会出现此错误。如果更新提供流量(请求)的版本,正在处理的请求将被丢弃,并会看到错误。

如果您通过更新当前提供的修订版来部署新修订版(例如,默认情况下使用

gcloud app deploy
),则可能会发生这种情况。默认情况下,您部署的每个版本都会自动配置为接收 100% 的流量,并停止以前的实例。

要解决此问题,请创建版本并将流量逐渐迁移到该版本,如下所示:

VERSION_ID=$(date +%Y%m%dt%H%M%S)
gcloud app deploy --version $VERSION_ID --no-promote
gcloud app services set-traffic --splits $VERSION_ID=1 --migrate

如果您还没有,您可能需要添加一个

/_ah/warmup
处理程序来支持这一点,并在
app.yaml
:

中添加一个指令
inbound_services:
- warmup

另请参阅:


0
投票

这是一个 AppEngine 错误。看起来(对于标准环境)实例应该拦截

/_ah/stop
请求并处理它。

在部署的情况下,不会发生该拦截,并且请求会到达已部署的代码。如果您通过删除手动停止实例,则

/_ah/stop
请求将被正确拦截和处理(并且不会到达已部署的代码)。

参见https://issuetracker.google.com/issues/326181160/dependencies

© www.soinside.com 2019 - 2024. All rights reserved.