独角兽挂着说清爽的宝石

时间:2011-08-26 13:06:15

标签: ruby-on-rails-3 configuration setup-deployment staging unicorn

在我从乘客那里迁移到独角兽之后,我在舞台上遇到了一个奇怪的问题。

我为开发和登台环境配置了独角兽。 它在开发中工作但不在分期中工作。在开发过程中,它会监听8080,就像在分段监听unix套接字一样。会有什么不同吗?特别是在生产中有点环境?

当我在登台

中运行时会发生这种情况
  1. 启动时需要几乎100%的CPU
  2. 有时它会安定下来,我可以使用它
  3. *但大部分时间它都会挂起**我不得不将其杀死。
  4. 我已经记录了有关此问题click here

    的问题

    这是我在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
    

    任何帮助高度赞赏。 提前致谢

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

对我来说,数据库连接没有正确配置。似乎有时它会在控制台上报告这个问题,有时它只会旋转。