Google App Engine 重新部署后首次处理请求需要很长时间?

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

在我的 Google 应用程序引擎项目中,每次重新部署项目并第一次发出请求时,执行操作大约需要 1.5 秒。但在下一个请求中只需要 0.196 秒时间。

例如: 当我查询数据存储以检索数据列表时时间戳是:

1st Request(Around 1.5 sec)             2nd Request(Around 0.196 sec)
Start Time  1399448227701               Start Time  1399448369720
End Time    1399448229292               End Time    1399448369916

所以我的问题是为什么应用程序引擎在重新部署后第一次需要花费太多时间来响应?

提前致谢。!!!

google-app-engine startup
3个回答
2
投票

它可能取决于几个因素,但很可能它与实例启动所需的时间相对应,这称为加载请求。一旦实例启动,下一个请求就会更快。

您在重新部署后会观察到这一点,但如果您的 App Engine 实例空闲时间太长(未收到请求),您也可以看到相同的行为,然后它会关闭,下一个请求将不得不等待新实例开始吧。

您可以更改空闲时间设置以及其他一些内容,例如始终打开的实例数量(常驻实例)等。微调这些是您的最佳选择。

查看此处的文档,它解释了很多相关内容。


0
投票

我也遇到了同样的问题。 Google Cloud 人员在这里很好地回答了这个问题

TL;博士:

如果您有高频、大量实例流失的场景,并且冷启动时间很慢,那么常驻实例是最好的选择。是的,您最终会得到更多的实例总数,但是让 GAE 处理常驻实例的扩展和缩减将会更优雅地响应您随时间推移的流量负载变化。

如果您处理低频流量,偶尔出现突发,并且冷启动时间较慢,那么保留一个always-cron实例是理想的选择,因为您可以以较少的总实例数优雅地处理初始流量负载.

就我而言,我将以下内容添加到我的

app.yaml
文件中,它按预期完成了工作:

automatic_scaling:
  min_idle_instances: 1

不过我会监控账单。如果下一个法案看起来很疯狂,我将改为应用始终 CRON 工作。


0
投票

我在使用 Google 托管后端应用程序时遇到了同样的问题。我发现如果没有活动,我的实例每 15 分钟就会休眠一次。

我的解决方案是设置一个云调度程序任务,在特定时间范围内每 14 分钟向我的应用程序发出一个小型 GET 请求。下午 6 点至晚上 10 点。

非常容易设置,但由于使用更多资源,它会产生更多成本,因此如果您选择此选项,请务必调整其时间以降低成本。

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