11

乗客からユニコーンに移行した後、ステージングに奇妙な問題があります。

開発環境とステージング環境の両方にユニコーンを構成しました。開発では機能しますが、ステージングでは機能しません。開発では 8080 をリッスンしますが、ステージングでは UNIX ソケットをリッスンします。それは違いを生むでしょうか?特に本番環境では?

これは、ステージングで実行するとどうなりますか

  1. 起動時にほぼ 100% の CPU を使用します
  2. たまに落ち着いて使えるようになりました
  3. *しかし、ほとんどの場合、ハングアップし**、強制終了する必要がありました。

この問題に関する質問を記録しましたここをクリック

これは 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

gem を更新しようとするのはなぜですか? 構成ファイルでそれを回避する方法はありますか?

これは私が 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

どんな助けでも大歓迎です。前もって感謝します

4

2 に答える 2

0

コードに構文エラーがないことを確認してください。

私にとっては、(コントローラーの1つで)構文エラーを修正すると、ループが終了し、Unicornが適切に起動しました。Unicorn でエラー メッセージは表示されませんでした。WebRat の使用を開始して、エラーが表示されるかどうかを確認してみてください。

于 2013-04-29T20:25:54.227 に答える