我成功地在Heroku上爲我的網站使用Unicorn服務器和Delayed_Job。但是我不確定它是否設置的最佳途徑,我希望得到有關如何查看工作進程的詳細信息,其中工程等。我的config/unicorn.rb文件粘貼如下:Unicorn.rb,Heroku,Delayed_Job config
worker_processes 3
preload_app true
timeout 30
# setting the below code because of the preload_app true setting above:
# http://unicorn.bogomips.org/Unicorn/Configurator.html#preload_app-method
@delayed_job_pid = nil
before_fork do |server, worker|
if defined?(ActiveRecord::Base)
ActiveRecord::Base.connection.disconnect!
Rails.logger.info('Disconnected from ActiveRecord')
# start the delayed_job worker queue in Unicorn, use " -n 2 " to start 2 workers
if Rails.env == "production"
# @delayed_job_pid ||= spawn("RAILS_ENV=production ../script/delayed_job start")
# @delayed_job_pid ||= spawn("RAILS_ENV=production #{Rails.root.join('script/delayed_job')} start")
@delayed_job_pid ||= spawn("bundle exec rake jobs:work")
elsif Rails.env == "development"
@delayed_job_pid ||= spawn("script/delayed_job start")
# @delayed_job_pid ||= spawn("rake jobs:work")
end
end
end
after_fork do |server, worker|
if defined?(ActiveRecord::Base)
ActiveRecord::Base.establish_connection
Rails.logger.info('Connected to ActiveRecord')
end
end
- 的delayed_job說要使用
RAILS_ENV=production script/delayed_job start
在生產模式下啓動工作進程,但是如果使用此命令,我會在Heroku中收到「文件未找到」錯誤。所以,現在我在生產中使用bundle exec rake jobs:work
,這似乎有效,但這是正確的嗎? - 在此設置中實際運行多少個進程,是否可以更好地優化?我的猜測是,有1個獨角獸主進程,3個Web工作者和1個延遲工作者共5個?當我在本地以開發模式運行時,我會看到5個紅寶石pid被產生。也許最好只使用2個Web工作者,然後給2名工作人員Delayed_job(我有相當低的流量)
- 所有這些都運行在一個Heroku dyno中,所以我不知道如何檢查狀態麒麟工人,任何想法如何?
**注意,我註釋掉了打破該網站是在生產,因爲Heroku上說,「找不到文件」
此公告是有益的,但與Resque交易。我正在使用delayed_job:http://stackoverflow.com/questions/11414321/rails-heroku-unicorn-resque-how-to-choose-the-amount-of-web-workers-resq – FireDragon 2013-02-12 21:52:50
你應該運行你的工作人員工人dynos,而不是你的主網頁dyno:https://devcenter.heroku.com/articles/background-jobs-queueing – catsby 2013-02-12 22:53:46
@ctshryock謝謝你,我在發佈之前閱讀了這篇文章和其他許多人。不知道你是否知道,但許多人專門使用獨角獸Web服務器,以便他們可以在單個測試儀中產生多個Web /工作進程。我對使用多個測功機不感興趣,或者我會一直使用瘦服務器併購買更多網絡工作者。如果你知道如何優化獨角獸,並且特別爲heroku配置unicorn.rb,儘管我全都耳熟能詳。謝謝! – FireDragon 2013-02-13 08:53:20