Ruby on rails 3 独角兽挂着令人耳目一新的宝石

Ruby on rails 3 独角兽挂着令人耳目一新的宝石,ruby-on-rails-3,configuration,setup-deployment,staging,unicorn,Ruby On Rails 3,Configuration,Setup Deployment,Staging,Unicorn,在我从“乘客”迁移到“独角兽”后,我在登台方面遇到了一个奇怪的问题 我为开发和登台环境配置了unicorn。 它在开发中工作,但不在分期阶段。在开发中,它监听8080,而在登台时监听unix套接字。那会有什么不同吗?特别是在生产环境方面 这就是我在staging中运行它时发生的情况 启动时几乎需要100%的CPU 有时它会稳定下来,我可以使用它 *但大多数时候它挂着**,我不得不杀了它 我已记录了有关此问题的问题 这是我在unicorn.stderr.log中看到的 I, [2011-08-26

在我从“乘客”迁移到“独角兽”后,我在登台方面遇到了一个奇怪的问题

我为开发和登台环境配置了unicorn。 它在开发中工作,但不在分期阶段。在开发中,它监听8080,而在登台时监听unix套接字。那会有什么不同吗?特别是在生产环境方面

这就是我在staging中运行它时发生的情况

  • 启动时几乎需要100%的CPU
  • 有时它会稳定下来,我可以使用它
  • *但大多数时候它挂着**,我不得不杀了它
  • 我已记录了有关此问题的问题

    这是我在unicorn.stderr.log中看到的

    I, [2011-08-26T09:02: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
    
    为什么它试图刷新宝石? 有没有办法在配置文件中避免它

    这是我在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
    
    非常感谢您的帮助。
    提前感谢

    确保您的代码没有语法错误


    对我来说,修复一个语法错误(在我的一个控制器中)结束了循环并正确启动了Unicorn。我在Unicorn中没有收到任何错误消息,您可能希望尝试开始使用WebRat,并查看是否出现错误。

    对我来说,是数据库连接配置不正确。看起来有时候它会在控制台上报告,有时候它只是旋转。

    你知道吗?我也遇到过同样的问题。我删除了这一行,发现它在一定程度上正常工作,但在| fork do | server,worker | ActiveRecord::Base.build | connection end似乎删除这一行会导致unicorn子进程中的共享数据库句柄出现问题。我最终无法在预装应用程序的守护程序模式下运行Unicorn。一旦我禁用了preload应用程序,它就不再引起问题了。PS-我使用的是Sinatra而不是Rails,但遇到的问题似乎与您相同,因此它可能不是特定于框架的。