GAE:队列速率和max_concurrent_requests之间的关系

时间:2015-01-19 21:17:01

标签: google-app-engine

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

1 个答案:

答案 0 :(得分:16)

有3个参数:

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

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

  • 如果是这样,令牌数量减少一个,如果已经执行的max concurrent requests少于rate,则任务开始执行。
  • 如果没有,则任务必须等待新的令牌/插槽以Max concurrent requests的速度到达。

如果你有一个大水桶,它可能会在交通流量低时填满,例如如果存储桶大小为20且需求突然达到峰值,则可以启动20个任务,因为它们都可以获得令牌。然后存储桶为空,任务将以速度处理。

max concurrent requests可以额外限制突发速率,因为长时间运行的任务会减慢整个处理速度。如果没有bucket size,则只有rate和{{1}}才能确定处理速度,而不是任务的持续时间。