내 사이트에 Heroku에서 Unicorn 서버와 Delayed_Job을 사용하고 있습니다.Unicorn.rb, Heroku, Delayed_Job 구성
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 :이 설치는 가장 좋은 방법 및 작업자 프로세스를 확인하는 방법에 대한 자세한 정보를 얻을 싶어하고 그러나 내가 확실 해요, 작동 등 내 설정/unicorn.rb 파일은 아래에 붙여 생산 모드에서 작업자 프로세스를 시작하는 데
RAILS_ENV=production script/delayed_job start
을 사용한다고하지만이 명령을 사용하면 Heroku에서 "파일을 찾을 수 없음"오류가 발생합니다. 그래서, 지금은 생산을 위해bundle exec rake jobs:work
을 사용하고 있습니다. 작동하는 것으로 보이지만 정확합니까? - 실제로 얼마나 많은 프로세스가이 설정에서 실행되고 더 최적화 될 수 있습니까? 제 생각에 유니콘 마스터 프로세스 1 개, 웹 작업자 3 명, 지연된 작업자 1 명이 총 5 명입니다. 내가 dev 모드에서 로컬로 실행하면 5 루비 PID가 생성되는 것을 볼 수 있습니다. 아마도 2 명의 웹 작업자 만 사용하고 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
다음 작업을 수행해야합니다. 작업자 dynos가 아니라 메인 웹 dyno : https://devcenter.heroku.com/articles/background-jobs-queueing – catsby
@ctshryock 감사합니다. 게시하기 전에이 기사와 많은 내용을 읽었습니다. 당신이 알고 있는지 확신 할 수 없지만 많은 사람들이 단일 dyno 내에 여러 웹/작업자 프로세스를 생성 할 수 있도록 특별히 유니콘 웹 서버를 사용합니다. 나는 하나 이상의 dyno를 사용하는 것에 관심이 없으며, 단지 얇은 서버를 계속 사용하고 더 많은 웹 노동자를 구입했을 것입니다. 당신이 유니콘을 최적화하는 것에 대해 알고 있고 특히 모든 귀에는 heroku를 위해 unicorn.rb를 특별히 구성한다면. 감사! – FireDragon