私は乗客からユニコーンに移動した後ステージングに奇妙な問題があります。ユニコーンがリフレッシュする宝石を言うとハングアップ
開発環境とステージング環境の両方でユニコンを設定しました。 開発中ですがステージングでは機能しません。開発中には、8080を聴いて、どこでUNIXソケットを聞くかをステージングします。何か違うことはありますか?特に生産環境では?
これは私が
- ステージングでそれを実行すると
- を開始時にはそれが落ち着くと、私はそれを使用することができる午前ながら、それは、ほぼ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
で、なぜそれが宝石を更新しようん見たものである。この問題click here
に関する質問を記録していますか? 設定ファイルでそれを避ける方法はありますか?
これは私が設定/ 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
高く評価任意の助けに持っているものです。 ありがとうございます
あなたはこれを理解しましたか?私は同じ問題を経験しました。 – David
私はこの行を削除し、やや動作していますが、それでも遅いことを発見しました after_fork do | server、worker | ActiveRecord :: Base.establish_connection end –
この行を削除すると、ユニコーンサブプロセスの共有データベースハンドルに問題が発生するようです。私はちょうどプリロードアプリでデーモンモードでUnicornを走らせることができなくなった。プリロードアプリを無効にすると、問題が発生しなくなりました。 – David