我正在构建一个数据处理应用程序,我想要一个传入(REST)请求来启动云实例,进行一些处理,然后检索结果。通常,它会是这样的:
我打算使用像jclouds这样的东西手动进行实例管理,但我想知道是否可以将GAE配置为执行此类操作(保存我的工作)。
如果我在GAE中设置了我的处理服务,我是否可以为每个传入请求启动一个新实例(或者当前实例处于100%CPU使用率时)?
答案 0 :(得分:0)
仅参考实例管理(即1-4和7)......
App Engine计划程序决定是否为每个新请求提供服务 使用现有实例(空闲或接受的实例) 并发请求),将请求放入待处理的请求队列,或 为该请求启动一个新实例。该决定考虑在内 可用实例的数量,应用程序的速度 一直在提供请求(延迟),以及启动需要多长时间 一个新的实例。
每个实例都有自己的传入请求队列。 App Engine 监视在每个实例的队列中等待的请求数。如果 App Engine检测到应用程序的队列过长 由于负载增加,它会自动创建一个新的实例 用于处理该负载的应用程序。
App Engine还会在请求卷时反向缩放实例 减少。这种缩放有助于确保您的所有应用程序 当前实例正被用于最佳效率和成本 有效性。
所以在scaling configuration我保留automatic_scaling
(这是默认设置)并使用:
App Engine应允许请求的最长时间 在开始处理新实例之前等待挂起队列 它。默认值为" 30ms"。
- 较低的最大值意味着App Engine会更快地为待处理的请求启动新实例,从而提高性能但会增加运营成本。
- 高最大值意味着用户可能需要等待更长时间才能提供服务请求(如果有待处理请求且没有空闲实例) 为他们服务),但你的申请费用会降低。
App Engine应允许请求的最短时间 在开始处理它的新实例之前等待挂起的队列。
- 最小值意味着当所有现有实例都处于活动状态时,请求必须在待处理队列中花费更少的时间。这改善了 性能,但会增加运行应用程序的成本。
- 如果所有现有实例都处于活动状态,则最低值意味着请求将保持更长时间。这降低了运行成本,但增加了 用户必须等待他们的请求被送达的时间。
另见Change auto scaling performance settings:
- 最低待定延迟 - 提升Min Pending Latency会指示App Engine的计划程序除非有请求,否则不会启动新实例 已超过指定时间。如果是所有实例 在忙,面向用户的请求可能必须在待处理队列中等待 直到达到此阈值。为此设置设置较高的值 将需要更少的实例启动,但可能会导致高 增加负载时用户可见的延迟。
如果您希望减少可能导致新实例启动的请求的延迟,您可能还需要查看Warmup requests。