Google App Engine 自动缩放如何工作?

Posted

技术标签:

【中文标题】Google App Engine 自动缩放如何工作?【英文标题】:How does Google App Engine Autoscaling work? 【发布时间】:2017-04-16 21:36:48 【问题描述】:

这个问题是关于 Google App Engine 配额和实例的。

我部署了一个 GAE 应用程序,但没有指定任何特定的扩展算法。从他们的文档来看,默认值似乎是自动缩放。

那么,他们何时将应用扩展到另一个实例,即新实例究竟何时生成?什么请求会导致第二个实例启动并拆分流量?

【问题讨论】:

在假设你被敲诈之前做更多的研究。不好笑。并且在他们的文档中得到了很好的解释。 然而,在生成新实例之前,每个实例类可以服务多少个请求/秒并没有答案。当然,他们的文档解释是合乎逻辑的:实例为请求提供服务,直到它不再能够为它们提供服务,然后新的请求被发送到一个新的旋转实例。但是你不认为提供一个数字会有所帮助吗?他们的文档很大,如果我遗漏了什么,请原谅我,但如果我在经过足够的搜索后找到了答案,我就不会在我的问题中做出任何大胆的陈述 例如,这就是 Heroku 的文档对 dynos 的评价:devcenter.heroku.com/articles/dynos#dynos-and-requests。至少在每秒大约 1000 个请求之前,用户知道他们是好的(当然要考虑到他们的延迟)。 【参考方案1】:

其实解释得很好。

来自Scaling dynamic instances:

App Engine 调度程序决定是否为每个新请求提供服务 使用现有实例(空闲或接受 并发请求),将请求放入待处理的请求队列中,或 为该请求启动一个新实例。该决定考虑到 可用实例的数量,应用程序的运行速度 一直在处理请求(它的延迟),以及启动需要多长时间 一个新的实例。

每个实例都有自己的传入请求队列。应用引擎 监控每个实例队列中等待的请求数。如果 App Engine 检测到应用程序的队列过长 由于负载增加,它会自动创建一个新的实例 处理该负载的应用程序。

可以调整自动缩放的参数,请参阅 Change auto scaling performance settings 和 Scaling elements

如果您真的想对实例数量施加硬性限制,您可能必须使用带有max_instances 配置的基本扩展或手动扩展。

【讨论】:

以上是关于Google App Engine 自动缩放如何工作?的主要内容,如果未能解决你的问题,请参考以下文章

Google App Engine 在基本缩放上抛出错误

基于“已用”内存的 Google Compute Engine 自动缩放

如果我们将 App Engine 配置为自动缩放,它会自动进行负载平衡吗?

如何在 Google App Engine 上自动化 Javascript 和 CSS 缩小?

在 Google App Engine 中创建表单自动完成

Google Compute Engine 如何决定在自动扩缩时关闭哪些实例?