【问题标题】:Gearman -- Unbalanced in dispatchingGearman——调度不平衡
【发布时间】:2017-08-03 05:41:17
【问题描述】:

我有 2 个具有不同 IP 地址的 gearman 管理员,我在两个客户端中有 40 名工作人员,每个客户端有 20 名工作人员。
这就是问题所在,我每 10 分钟检查 2 个管理员的状态,他们一开始的作业数量相同,但他们的数量下降速度不同,admin2 比 admin1 快 3 倍。
这种情况最终导致了一个问题,如果有2种巨大的jobs集合,例如job1有400000个jobs,job2有400000个jobs,job2比job1晚一个小时触发,那么每个job都会先完成一半, 因为另一半紧紧握在 admin1 的手上,只有 admin2 完成调度才能让 admin1 调度他的工作,这是一场灾难,因为我希望 job1 完成,但没有完成一半,一直等待其他的一半要完成的工作。

这是一个例子:

【问题讨论】:

  • 因此,它们的速度不同。但是问题是什么?

标签: python admin dispatch gearman


【解决方案1】:

所以我找到了原因。在 gearman 服务器中,它只会在 worker 标记为 sleep 时发送 noop msg 而不是 is_noop_sent,并且在发送 noop msg 后,is_noop_sent 设置为 false,并且只有在 get grab job 命令时才会设置为 true。
但是在python gearman中,它使用一个锁来控制recv循环,如果它无法获得锁,如果它会传递或发送pre_sleep命令 - 并且将导致服务器不再noop worker的结果。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-26
    • 2019-03-25
    • 1970-01-01
    • 1970-01-01
    • 2011-08-28
    相关资源
    最近更新 更多