GAE:排队率与max_concurrent_requests的关系

GAE: relationship between queue rate and max_concurrent_requests

我正在阅读有关 GAE task queues 的文档,但我不清楚 ratemax_concurrent_requests 之间的关系(如果有的话)。 rate 是否指的是单个请求,例如rate=20/s 和 max_concurrent_requests=10 实际上意味着总共最多 200 requests/s?

有3个参数:

  • bucket size~最大连发率
  • rate~正常处理率
  • max concurrent requests ~ 额外的并发限制

当任务开始执行时,它会查看存储桶以检查是否有空闲的令牌或插槽。

  • 如果是,则令牌数量减一,如果已执行的令牌少于 max concurrent requests,则任务开始执行。
  • 如果没有,任务将不得不等待新的token/slot以rate的速度到达。

如果你有一个大桶,它可能会在流量低时填满,例如。桶大小为 20 并且突然出现需求高峰,您可以启动 20 个任务,因为它们都可以获得令牌。然后桶是空的,任务将以速度处理。

Max concurrent requests 可以额外限制突发速率,因为长 运行 任务会减慢整个处理速度。如果没有 max concurrent requests,只有 bucket sizerate 决定处理速度,而不是任务的持续时间。