2013-05-02 36 views
1

LO家伙,什么可能会延误我的芹菜任务?

我有一个可爱的小问题,也许有人可以帮助我弄清楚究竟是什么在这里发生的事情:

我有千千万万的应以毫秒为单位执行相同的任务,我重新启动之后他们实际上是以毫秒为单位执行的工作人员,但是在记录了一堆这些任务之后,我从芹菜那里得到一个大块,说他们已经完成了(http://d.pr/n/66h),并且在一个非常大的时间范围内一起完成......之后,任务需要大约5-13s才能执行。 这让我估计芹菜可能会在大约一周的执行时间内完成所有任务。 (AAAAAhhhhh)

工人重新启动后大约30-60任务以正常速度执行,所以说。 之后,我每隔几秒就会得到一个结果 - 像上面提到的那样有点像4-13s。 当然,在某些情况下,要做的事情要比其他事情多一点,但这并不能证明差异从0.08秒到13秒不等。

我目前使用redis作为代理(即将切换到RabbitMQ),结果后端和任务本身将一些数据保存到Solr实例,但所有这些连接仍应以毫秒为单位完成!

我想知道究竟是什么延迟了所有这些任务。任何人?

愉快 安迪

回答

0

经过一段时间的修复和再次破坏后,我发现问题是工人本身(和配置 - 我的坏)。 该配置说写结果到后端,它很好地做到了50k的结果坐在“垃圾桶”,并及时工人变得没有反应..在几个小时后摆弄我得到了点到了我在本地调试工作人员时,我惊讶地发现在redis响应方法中卡住了。

这种“只是”在服务器上花了大约10秒,但有点像我的拨号连接永远。所以我给redis响应方法添加了一个print,并看到redis中所有可用的50k结果键都被传输到我的机器中。

所以这就是一切都变得没有反应的真正原因。 添加芹菜设置来停止拧干结果并清除redis后端立即解决了问题。

我仍然想知道为什么redis喜欢请求密钥,尽管它不应该使用em。我没有以任何方式评估结果,否则首先就不会有5万个问题。 :P

无论如何 - 对于那个把那个代码放在那里的人 这么长,并且对所有的鱼都比较好

1

,我们在这里有同样的问题。我们通过在django设置中使用芹菜设置来解决问题。在降低并发性(至2)并将其重置为原始状态(10)后,一切正常。 也许试试看。