是否可以将GAE配置为按请求启动新实例?

时间:2017-02-22 22:15:27

标签: google-app-engine

我正在构建一个数据处理应用程序,我想要一个传入(REST)请求来启动云实例,进行一些处理,然后检索结果。通常,它会是这样的:

  1. 接收请求
  2. 启动实例
  3. 向实例发送请求
  4. 实例进程(在所有实例CPU上加载~100%)
  5. 轮询服务在实例上运行状态
  6. 从实例中获取结果
  7. 关闭实例
  8. 我打算使用像jclouds这样的东西手动进行实例管理,但我想知道是否可以将GAE配置为执行此类操作(保存我的工作)。

    如果我在GAE中设置了我的处理服务,我是否可以为每个传入请求启动一个新实例(或者当前实例处于100%CPU使用率时)?

1 个答案:

答案 0 :(得分:0)

仅参考实例管理(即1-4和7)......

来自Scaling dynamic instances

  

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