請原諒我的無知,但是有沒有增加Resque工人每個動態進程的進程數?如果是這樣,怎麼樣?Heroku上的resque併發性(每個節點運行多個工人)
我目前正在使用Unicorn爲Web dynos添加併發功能,迄今爲止它一直在運行良好。我想將此延伸到Resque工作人員。我按照Heroku's guide來設置併發。
請原諒我的無知,但是有沒有增加Resque工人每個動態進程的進程數?如果是這樣,怎麼樣?Heroku上的resque併發性(每個節點運行多個工人)
我目前正在使用Unicorn爲Web dynos添加併發功能,迄今爲止它一直在運行良好。我想將此延伸到Resque工作人員。我按照Heroku's guide來設置併發。
更新:下面的解決方案工作,但不建議。對於heroku上的resque concurrency,使用resque-pool寶石。
如果您使用COUNT=*
選項,則可能會出現這種情況。你procfile看起來像:
web: bundle exec unicorn -p $PORT -c ./config/unicorn.rb
resque: env TERM_CHILD=1 COUNT=2 RESQUE_TERM_TIMEOUT=6 QUEUE=* bundle exec rake resque:workers
這是impotant要注意的是,在Procfile rake任務是resque:workers
和不resque:work
。
更新說明
沒有與COUNT=*
選項和rake resque:workers
調用生產在Heroku上的重大問題。由於resque使用線程啓動多個工作人員,所有SIGTERM
,SIGKILL
等處理允許工人停止當前工作,重新排隊工作並正常關閉(包括取消註冊)將會發生。這是因爲信號由主進程處理而不被線程捕獲。這可能會導致幻影工作者在被殺後很長一段時間內留在工作人員名單中。這可能是爲什麼在resque代碼中有a comment,它警告resque:workers只能用於開發模式。