目前,我正在使用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
下的有效配置是
我想利用所有28个实例小时,略微降低性能,但不会产生每日费用:)
我可以知道,我应该开始微调哪个配置参数?
我曾尝试过
automatic_scaling:
max_idle_instances: 1
min_idle_instances: 0
max_concurrent_requests: 80
然而,它似乎使事情变得更糟。
创建了5个实例,但没有一个是活动的?!
现在,我只提供了2k请求,但已经消耗了16.8个实例小时
与我的另一个应用程序相比,它提供更高的流量(但延迟更低)。它总是只有1个实例。到目前为止,只消耗了8.43个实例小时
我在更高流量的应用yaml文件中没有任何特殊参数。因此,我不确定为什么它们产生的实例数量存在差异。
答案 0 :(得分:1)
如果您的应用支持它(并非所有应用都支持! - 这取决于它们的编码方式)尝试设置threadsafe: true
,允许一个实例并行处理多个请求,这将减少整体请求延迟,从而帮助GAE自动调节器决定发射更少的实例。如果这样可行,您还可以尝试调整相关的max_concurrent_requests
。
要尝试的另一件事是通知自动调节器您的应用可以通过min_pending_latency
和max_pending_latency
容忍更高的请求延迟。相关:
将max_idle_instances
设置为1(如果可以,甚至为0),以防止自动调节器启动实际上对提供流量没有多大帮助的空闲实例。见What does setting the automatic_scaling max_idle_instances to zero (0) do?
最后,如果确实想要对您的实例编号设置硬性上限,您可以切换到基本扩展,它具有max_instances
配置选项。但请注意,如果突然请求负载很高,这会严重降低用户体验。