unicorn hangs saying Refreshing Gems
I have a strange problem in staging after i migrated to unicorn from passenger.
I configured unicorn for both development and staging environment . its working in development but not in staging. In development its listening to 8080 where as in staging its listening to a unix socket. Will that make any diferrence ? Especially in production kinda env?
This is what happens when i run it in staging
- It takes almost 100% CPU while starting
- sometimes it settles down and i am able to use it
- *But most of the times it hangs** and i had to kill it.
I have logged a question regarding this issue click here
This is what i see in unicorn.stderr.log
I, [2011-08-26T09:0开发者_开发知识库2:53.324286 #5026] INFO -- : unlinking existing socket=/home/krishnaprasad/project_name/tmp/sockets/unicorn.sock
I, [2011-08-26T09:02:53.324502 #5026] INFO -- : listening on addr=/home/krishnaprasad/project_name/tmp/sockets/unicorn.sock fd=3
I, [2011-08-26T09:02:53.324860 #5026] INFO -- : Refreshing Gem list
why does it try to refresh the gems ? is there any way to avoid it in config file ?
this is what i have in config/unicorn_staging.rb
# unicorn_rails -c /config/unicorn_staging.rb -E staging -D
rails_env = 'staging'
working_directory "/home/krishnaprasad/Projects/project_name"
worker_processes 1
preload_app true
timeout 90
rails_root = "/home/krishnaprasad/Projects/project_name"
listen "#{rails_root}/tmp/sockets/unicorn.sock", :backlog => 2048
pid "#{rails_root}/tmp/pids/unicorn.pid"
stderr_path "#{rails_root}/log/unicorn.log"
stdout_path "#{rails_root}/log/unicorn.log"
GC.copy_on_write_friendly = true if GC.respond_to?(:copy_on_write_friendly=)
before_fork do |server, worker|
ActiveRecord::Base.connection.disconnect!
old_pid = "#{Rails.root}/tmp/pids/unicorn.pid.oldbin"
if File.exists?(old_pid) && server.pid != old_pid
begin
Process.kill("QUIT", File.read(old_pid).to_i)
rescue Errno::ENOENT, Errno::ESRCH
# someone else did our job for us
end
end
end
after_fork do |server, worker|
ActiveRecord::Base.establish_connection
end
Any help highly appreciated. Thanks in advance
Make sure your code is free of syntax errors!
For me fixing a syntax error (in one of my controllers) ended the loop and started Unicorn properly. I did not get any error messages in Unicorn, you might want to try to start using WebRat and see if an error pops up.
For me, it was the database connection wasn't configured correctly. It seems like sometimes it reports this at the console, sometimes it just spins.
精彩评论