队列权重是否有限制?文档并没有很清楚地说明。
据我所知,often
队列的检查次数比default
队列多2倍,比seldom
队列多4倍?如果我添加一个权重为100的队列会怎么样?
:queues:
- [often, 7]
- [default, 5]
- [seldom, 3]
队列权重并不像你所说的那样遵循 y = 2x
。该权重只表示下一个作业将从该队列中被拉出的几率。例如:
:queues:
- [double, 12]
- [single, 6]
- [half, 3]
在这个设置中,下一个作业有57%的机会来自于double
,29%的机会来自于single
,14%的机会来自于half
。如果在这个设置中添加一个权重为100的队列,那么会偏向于从新加入的100权重队列获取下一个作业,概率为82%,10%来自double
,5%来自single
,大约2.5%来自half
。
值得注意的是,这并不控制作业实际运行或执行的频率,而是控制检查哪个队列。例如,将一个包含需要尽快运行但不频繁的作业的“紧急”队列配置为高队列权重,将导致相对于工作,您的工作人员进行更多轮询。
如果您遇到这样一种情况:不希望低优先级的长时间运行的作业干扰高优先级的快速作业,则应该考虑为每个作业运行专用实例,而不是尝试调整队列权重。