隊列的健康,我有以下設置:如何監測芹菜
- 通用的工作池100名工人
- 高優先級的工作池與50名工人
- 我用這麼大的數字,因爲大多數我的任務花費在等待I/O有很長的超時時間(這樣做可能需要長達20秒響應HTTP請求)
- 使用的RabbitMQ作爲經紀人
- 我已經使用init建立celeryd作爲一個守護進程.d scripts從celery'd github上,使用以下參數:
CELERYD_OPTS="--time-limit=600 -c:low_p 100 -c:high_p 50 -Q:low_p low_priority_queue_name -Q:high_p high_priority_queue_name"
我的問題是,有時排隊似乎「備份」 ...這是它會停止消費的任務。這似乎有對情景的:
- 沒有在代理「確認」的消息的緩慢積累,即使將表明,並非所有的工人都用完了 - 那就是,我只會看到一些活動任務
- 隊列只會停止消費新任務,沒有積累。
- 在其「死」狀態時,在工人使用
strace
處理回到什麼......從工人完全零放射性
我將不勝感激的任何信息或指針:
- 如何我可以調試它。我可以用
strace
,看看有什麼工作進程都在做,但到目前爲止,工人被掛 - 如何監控這一點,可以做自動的恢復功能,一直在告訴我有用的。有管理芹菜許多工具(
flower
和events
但他們在實時兼具優良 - 但沒有任何自動化監控/報警功能)。我最好用supervisord寫自己的監測工具嗎?
而且,我開始我的任務從Django的芹菜
你最終會解決這個問題? – bouke
這是舊的,但備份的隊列,我知道的兩個原因是:(1)你的任務中創建任務。如果你這樣做了,你最終會達到你沒有工作人員在任務中消耗任務的地步,並且你會凍結。 (2)如果您使用請求,進行大量下載或其他任何操作,則它沒有默認超時,所以如果您有下載錯誤,它可能會完全凍結。一旦工人凍結,就完成了。 – mlissner