调度不平衡

2024-03-29 12:12:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个不同IP地址的gearman管理员,两个客户端有40个工作人员,每个客户端有20个工作人员。
问题是,我每10分钟检查2个管理员的状态,开始时他们有相同数量的作业,但是他们的数量以不同的速度下降,admin2比admin1快3倍。
这种情况最终导致了一个问题,如果有两种巨大的工作集,例如job1有40万个工作,job2有40万个工作,job2比job1晚一个小时触发,那么每个人都会先完成其中的一半,因为另一半被admin1紧紧抓住,只有admin2完成了分派,admin1才能分派他的作业,这是一个灾难,因为我希望job1完成,但不完成其中的一半,而是一直等待其他作业的一半完成。你知道吗

例如:
enter image description here


Tags: 客户端分派数量状态管理员作业情况速度
1条回答
网友
1楼 · 发布于 2024-03-29 12:12:38

所以我找到了原因。在gearman服务器中,只有当一个worker被标记为sleeping而不是is\u noop\u sent时,它才会发送noop msg,并且在发送noop msg之后,is\u noop\u sent被设置为false,并且只有在get grab job命令时才会设置为true。
但是在python gearman中,它使用一个锁来控制recv循环,如果它不能获得锁,if将传递或发送pre\u sleep命令,并将导致服务器再也不会停止工作进程。你知道吗

相关问题 更多 >