【问题标题】:GAE: What's the difference between <min-pending-latency> and <max-pending-latency>?GAE:<min-pending-latency> 和 <max-pending-latency> 有什么区别?
【发布时间】:2017-04-04 03:29:19
【问题描述】:

据我所知,这两个设置都做同样的事情:当请求在待处理队列中花费的时间超过该设置所说的时间时,启动一个新实例。

&lt;max-pending-latency&gt; App Engine 在启动新实例处理请求之前应允许请求在待处理队列中等待的最长时间。默认值:“30 毫秒”。

  • 较低的最大值意味着 App Engine 将更快地为待处理的请求启动新实例,从而提高性能但增加运行成本。
  • 较高的最大值意味着如果有待处理的请求并且没有空闲实例可以为它们提供服务,那么用户可能会等待更长的时间等待其请求得到处理,但您的应用程序的运行成本会更低。

&lt;min-pending-latency&gt; App Engine 在启动新实例处理请求之前应允许请求在待处理队列中等待的最短时间。

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

来源:https://cloud.google.com/appengine/docs/java/config/appref

那么最小值和最大值有什么区别呢?

【问题讨论】:

    标签: google-app-engine


    【解决方案1】:

    您可能缺少了解这些设置的一条信息,即 App Engine 可以选择在 min-pending-latency 和 max-pending-latency 之间的任何时间创建实例。

    这意味着在 min-pending-latency 之前永远不会创建实例来服务待处理的请求,并且始终会在达到 max-pending-latency 后创建实例。

    我认为最好的理解方式是查看请求进入待处理队列时的事件时间线:

    1. 请求到达应用程序,但没有可用的实例为其提供服务,因此将其置于待处理请求队列中。
    2. 直到达到 min-pending-latency:App Engine 尝试找到一个可用的实例来处理请求并且不会创建一个新实例.如果请求的服务低于此阈值,则表明 App Engine 需要缩减。
    3. 达到 min-pending-latency达到 max-pending-latency 后:App Engine 尝试查找可用的实例来提供服务请求。
    4. 达到 max-pending-latency 后:App Engine 停止搜索可用实例来处理请求并创建一个新实例。

    来源:app.yaml automatic_scaling element

    【讨论】:

    • 能否提供此事件序列的来源?还有什么时候请求实际上被杀死了,因为它达到了它可以留在请求队列中的最长时间?我指的是错误:“在等待太长时间以尝试为您的请求提供服务后请求被中止。”
    • @Pievis 这是我对the relevant documentation的理解。至于那个错误,GAE 标准的time limit 请求时间为 60 秒。在正常情况下,如果您不使用自动扩展并且实例用完,您可能会收到此错误。如果您使用自动缩放并收到此错误,请联系支持人员或file an issue
    • 更新:我对这个序列的一个方面有误解。 App Engine 永远不会处于可以“可能选择”执行任何给定操作的状态。我已经更新了我的答案以澄清。
    猜你喜欢
    • 2013-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-26
    相关资源
    最近更新 更多