适用于Google App Engine标准环境的{max}

时间:2018-01-22 11:26:10

标签: python google-app-engine

目前,我正在使用Google App Engine标准环境(Python)运行应用程序

在每日重置24小时免费配额之前只有 1或2小时,我将耗尽所有 28个小时

我的流量模式在大多数情况下都很低,除非在夜间大约8小时左右。

我的app.yaml几乎可以回归到所有默认设置

application: my-webapp
version: 1
runtime: python27
api_version: 1
threadsafe: false

我仍然希望依赖automatic_scaling。我希望稍微降低我的应用引擎性能,以换取没有每日费用。

在灵活环境中,我意识到我们可以具体配置

https://cloud.google.com/appengine/docs/flexible/python/configuring-your-app-with-app-yaml

automatic_scaling:
  min_num_instances: 1
  max_num_instances: 1

我想限制我的App Engine标准环境中的最大实例数。但是,我在标准环境中找不到max_num_instances配置。

https://cloud.google.com/appengine/docs/standard/python/config/appref#scaling_elements

我发现标准环境automatic_scaling下的有效配置是

  • max_concurrent_requests
  • max_idle_instances
  • max_pending_latency
  • min_idle_instances
  • min_pending_latency

我想利用所有28个实例小时,略微降低性能,但不会产生每日费用:)

我可以知道,我应该开始微调哪个配置参数?

更新

我曾尝试过

automatic_scaling:
  max_idle_instances: 1
  min_idle_instances: 0
  max_concurrent_requests: 80

然而,它似乎使事情变得更糟。

enter image description here

创建了5个实例,但没有一个是活动的?!

现在,我只提供了2k请求,但已经消耗了16.8个实例小时

enter image description here

与我的另一个应用程序相比,它提供更高的流量(但延迟更低)。它总是只有1个实例。到目前为止,只消耗了8.43个实例小时

enter image description here

enter image description here

我在更高流量的应用yaml文件中没有任何特殊参数。因此,我不确定为什么它们产生的实例数量存在差异。

1 个答案:

答案 0 :(得分:1)

如果您的应用支持它(并非所有应用都支持! - 这取决于它们的编码方式)尝试设置threadsafe: true,允许一个实例并行处理多个请求,这将减少整体请求延迟,从而帮助GAE自动调节器决定发射更少的实例。如果这样可行,您还可以尝试调整相关的max_concurrent_requests

要尝试的另一件事是通知自动调节器您的应用可以通过min_pending_latencymax_pending_latency容忍更高的请求延迟。相关:

max_idle_instances设置为1(如果可以,甚至为0),以防止自动调节器启动实际上对提供流量没有多大帮助的空闲实例。见What does setting the automatic_scaling max_idle_instances to zero (0) do?

最后,如果确实想要对您的实例编号设置硬性上限,您可以切换到基本扩展,它具有max_instances配置选项。但请注意,如果突然请求负载很高,这会严重降低用户体验。

相关问题