2014-09-30 22 views
0

我在AWS c3.xlarge(4核心機器)上運行多個芹菜工作進程。有一個「批處理」工作進程,其--concurrency參數設置爲2,「優先級」進程及其--concurrency參數設置爲1.兩個工作進程都從相同的優先級隊列中提取。我正在使用Mongo作爲我的經紀人。當我將多個作業提交到優先級隊列時,即使有多個工作人員可以依次處理它們,但它們會依次處理。所有項目都由「優先級」進程處理,但如果我停止「優先級」進程,「批處理」進程將處理所有內容(仍然是連續的)。我可以怎樣配置不正確,阻止芹菜異步處理作業?爲什麼我的芹菜工作人員會連續處理所有東西?

編輯:事實證明,同步瓶頸是在服務器提交作業,而不是在芹菜。

+0

你的意思是這些任務不公平地派給工人嗎? – Pierre 2014-09-30 09:59:40

+0

是的。但是,並不僅僅是一些工人比其他工人獲得更多的工作。所有這些任務都被分配給一個單獨的工作流程,即使它很繁忙,其他工作人員也可以處理它們。我注意到這臺機器上的內存非常低,所以我目前正在研究這是否是問題所在。 – 2014-09-30 10:39:49

回答

0

默認情況下,工作人員將預取4 * concurrency number任務執行,這意味着您的第一個正在運行的工作人員預取4個任務,所以如果您排隊等待4個或更少的任務,它們將全部由該工作人員單獨處理, t是隊列中的任何其他消息被第二個工作人員消費。

您應該將CELERYD_PREFETCH_MULTIPLIER設置爲最適合您的編號,我之前遇到過此問題,並將此選項設置爲1,現在我的所有任務都被工作人員相當耗費。

相關問題