2017-06-22 46 views
0

這裏是ActiveJobs一些問題,我有:Rails的併發和activejobs

  1. 說我排隊的作業n個經由ActiveJobs上sidekiq作業隊列。在我的EC2上,我設置了4個工人,每個工作5個線程。這是否意味着多達20個並行作業將同時運行?當每個線程閒置並且處理它時,每個線程都會選擇一個排隊的作業嗎?我嘗試了這個設置,但它似乎仍然在一次處理串行 - 1個作業。我需要做更多的設置嗎?

  2. 關於併發性 - 我將如何能夠設置更多的EC2實例來解決作業隊列本身?

  3. 關於隊列本身 - 有沒有辦法讓我們從Rails中管理/查看隊列?還是應該依靠sidekiq的Web界面來查看隊列?

+0

彪馬設置不會影響sidekiq可言。 Sidekiq有其自己的併發設置。 –

回答

1

Sidekiq有很好的Wiki。至於你的問題:

  1. Sidekiq(和其他後臺作業的實現)的工作原理爲queued jobs
    其中producer是您的Rails應用程序(S),Queue - Redis的和consumer - Sidekiq工人(S)。這三個實體都是完全獨立的應用程序,可以運行在不同的服務器上。所以,Puma和Rails應用程序都不會影響Sidekiq併發性。
  2. Sidekiq併發性描述遠遠超出了SO答案。您可以通過「縮放Sidekiq工作人員」來Google大型帖子。簡而言之:是的,您可以運行單獨的EC2實例並設置Redis並調整Sidekiq工作者數量,每個工作者的併發數,ruby運行時間,隊列併發和優先級等等。
    編輯:Sidekiq有每個工人的配置(通常是sidekiq.yml)。但是工作人員的數量是由像Debian的Upstart這樣的系統工具管理的。或者您可以購買具有許多功能的Sidekiq Pro/Enterprise(如sidekiqswarm)。
  3. 從維基:Sidekiq API
+0

謝謝你 - 畢竟我是在吠叫錯誤的樹。維基幫助 - 仍在努力,但會在對此提出更多問題之前進一步嘗試。再次,知道所有的配置將在sidekiq方面,至少指出我在正確的方向。乾杯 –

+0

@JoelLim是的,Sidekiq有每個工人的配置(通常是sidekiq.yml)。但是工作人員的數量是由像Debian的Upstart這樣的系統工具管理的。或者您可以購買具有許多功能的Sidekiq Pro/Enterprise(如sidekiqswarm)。如果它幫助你,你能否將我的答案標記爲已接受? –