Google App Engine - 始终在实例上自动扩展?

时间:2016-06-12 23:58:28

标签: java android google-app-engine

对于一个全新的应用程序使用GAE最烦人的事情之一就是必须处理如果没有人在15分钟内打到你的服务器就被重新启动的实例。由于应用程序是新用户,或者只是用户很少,因此对于一些不知道实例正在运转的用户来说会有很长的延迟时间。#34;

据我所知,您可以根据docs

选择这些选项

使用manual-scaling并将实例数设置为1

当你使用manual-scaling时,你设置它的实例数量就是你将拥有的 - 不多也不少。这显然是低效的,因为您可能正在为未使用的实例付费,并且当流量增加/减少时不会自动添加/删除实例

使用basic-scaling并将idle-timeout设置为24小时或48小时。

只要有人在该时间段内至少一次查询您的API,就会保持您的实例正常运行。

automatic-scaling使用min-idle-instances并启用预热请求。

这不按预期工作。根据这些docs

  

如果您的应用没有投放流量,则第一次向该应用发出请求即可   永远是一个加载请求,而不是一个预热请求。

这并不能解决我们的问题,因为如果零实例正在运行,那么首先没有任何东西可以预热。因此,您仍然可以在第一次请求时获得延迟。

我想要的效果总是让一个实例运行,然后在流量增加时从那里扩展(当然缩小但从不低于一个实例)。这就像自动缩放,但总是运行一个实例。

GAE有可能吗?或者我错过了什么?

目前,我的临时解决方案是使用1个实例将我的应用设置为manual-scaling,因此至少我的应用可用于新用户。

1 个答案:

答案 0 :(得分:5)

我尝试和工作的一个解决方案是使用自动扩展并发出一个cron作业,它只需要每隔5分钟左右在servlet中执行任何公共静态api方法(它只需要零参数并返回null)。

请点击此处了解如何进行设置:https://cloud.google.com/appengine/docs/java/config/cron#creating_a_cron_job

这为您提供了28个免费实例小时与使用手动缩放8小时

的好处