【发布时间】:2016-06-12 23:58:27
【问题描述】:
将 GAE 用于全新应用程序最烦人的事情之一是,如果 15 分钟内没有人访问您的服务器,则必须处理实例被重新启动的问题。由于该应用是新应用,或者只有很少的用户,对于一些不知道实例正在“启动”的用户来说,会有一段很长的延迟时间
据我所知,您有这些基于docs 的选项:
使用manual-scaling并将实例数设置为1。
当您使用manual-scaling 时,无论您将其设置为多少实例,您都将拥有- 不多也不少。这显然是低效的,因为您可能会为未使用的实例付费,并且实例不会随着流量的增加/减少而自动添加/删除
使用 basic-scaling 并将 idle-timeout 设置为 24 小时或 48 小时。
只要有人在该时间段内至少查询一次您的 API,这将使您的实例保持运行。
使用 automatic-scaling 和 min-idle-instances 并启用预热请求。
这不能按预期工作。根据这些docs:
如果您的应用没有提供任何流量,则对该应用的第一个请求将 始终是加载请求,而不是预热请求。
这并不能解决我们的问题,因为如果零个实例正在运行,那么一开始就没有什么可以预热的。因此,您仍然会在第一个请求时获得延迟。
我想要的理想效果是始终让一个实例运行,然后在流量增加时从那里扩大(当然缩小但永远不要低于一个实例)。这就像自动缩放,但始终运行 1 个实例。
这在 GAE 中可行吗?还是我错过了什么?
目前,我的临时解决方案是将我的应用设置为 manual-scaling 和 1 个实例,这样至少我的应用可供新用户使用。
【问题讨论】:
-
有点hackish但是:通过stackdriver配置健康检查。每隔几分钟免费请求一次,让您的实例保持活跃
-
@zapl 你能提供更多关于你是如何设置它的信息吗?
-
cloud.google.com/monitoring/quickstart-lamp#gs-checks(或任何其他定期发出简单 http(s) 请求的正常运行时间检查)
-
@zapl 我发现您的 stackdriver 方法没有将实例保持在...
-
似乎对我有用,花了一段时间,但检查启动了一个空闲的 gae 应用程序并保持它运行至今。
标签: java android google-app-engine