2017-02-22 100 views
0

我正在构建一个数据处理应用程序,我希望传入(REST)请求可以启动云实例,执行一些处理,然后检索结果。通常情况下,这将是这样的:GAE可以配置为每个请求启动一个新实例吗?

  1. 收到请求
  2. 启动实例
  3. 发送请求到实例
  4. 实例进程(〜在所有情况下的CPU 100%负载)
  5. 调查服务运行状态为
  6. 从实例获取结果
  7. 关闭实例

我打算使用类似jclouds的方法手动进行实例管理,但我想知道GAE是否可以配置为执行此类操作(节省我的工作量)。

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

回答

0

参照实例管理只(即1-4和7)...

Scaling dynamic instances

的应用程序引擎调度器决定是否服务于每个新的请求 与现有实例(无论是空闲的还是接受并发请求的 ),都会将请求放入挂起的请求队列中,或者 为该请求启动一个新实例。该决定考虑了可用实例的数量 ,您的应用程序有多快( )服务请求(其延迟)以及将新实例启动 需要多长时间。

每个实例都有自己的传入请求队列。 App Engine 监视每个实例队列中等待的请求数。如果 由于负载增加,App Engine会检测到应用程序的队列变得太长,因此会自动创建 应用程序的新实例来处理该负载。

当请求卷 减少时,App Engine也会反向缩放实例。这种扩展有助于确保所有应用程序的当前实例都被用于实现最佳效率和成本效益。

所以在scaling configuration我会保持automatic_scaling(这是默认值),并一起玩:

的最大金额的一次App Engine的应允许请求 在启动新实例以处理 它之前在待处理队列中等待。默认值是“30ms”。

  • 较低的最大值意味着App Engine将尽快为未决请求启动新实例,从而提高性能,但会增加运行成本。
  • 高的最大意味着用户可能会等待更长的时间对他们的请求送达(如果有挂起的请求,并 没有空闲的情况下,为他们服务),但你的应用程序将大大降低运行成本。

的时候,应用程序引擎应该允许启动一个新的实例来处理它之前 等待在等待队列的请求的最低金额。

  • 当所有现有实例处于活动状态时,最小值意味着请求必须在待处理队列中花费更少的时间。这可以提高性能,但会增加运行应用程序的成本。
  • 较高的最低意味着如果所有现有实例是激活的请求将保持未决更长。这降低了运行成本,但是增加了用户必须等待其服务请求的时间 。

又见Change auto scaling performance settings

  • 闵喷玎延迟 - 提高Min Pending Latency指示App Engine的调度程序无法启动一个新的实例,除非请求 一直悬而未决的不是更指定时间。如果所有实例 都忙,则面向用户的请求可能不得不在等待队列 中等待,直到达到此阈值。设置较高的值,这个设置 将需要较少的情况下被启动,但可能会导致增加的负载在高 用户可见的延迟。

你也可能想看看Warmup requests,如果你想减少等待时间,这将导致一个新的实例启动的请求。

相关问题