2013-05-02 31 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)後,一切正常。 也許試試看。