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

gsa*_*kis 4 google-app-engine

我阅读的文档GAE的任务队列,我不清楚之间的关系(如果有的话)ratemax_concurrent_requests.是否rate参考单个请求,例如rate = 20/s和max_concurrent_requests = 10实际上意味着总共最多200个请求/秒?

kom*_*oma 16

有3个参数:

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

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

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

如果你有一个大桶,它可能会在流量较低时填满,例如,桶大小为20,需求突然达到峰值,你可以开始20个任务,因为它们都可以获得一个令牌.然后存储桶为空,任务将以速率处理.

Max concurrent requests可以另外限制突发速率,因为长时间运行的任务将减慢整个处理.没有max concurrent requests,只有bucket sizerate确定处理速度,而不是你的任务的持续时间.