10

私は乗客からユニコーンに移動した後ステージングに奇妙な問題があります。ユニコーンがリフレッシュする宝石を言うとハングアップ

開発環境とステージング環境の両方でユニコンを設定しました。 開発中ですがステージングでは機能しません。開発中には、8080を聴いて、どこでUNIXソケットを聞くかをステージングします。何か違うことはありますか?特に生産環境では?

これは私が

  1. ステージングでそれを実行すると
  2. を開始時にはそれが落ち着くと、私はそれを使用することができる午前ながら、それは、ほぼ100%のCPUを取り、何が起こるかである
  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 

で、なぜそれが宝石を更新しようん見たものである。この問題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 

高く評価任意の助けに持っているものです。 ありがとうございます

+0

あなたはこれを理解しましたか?私は同じ問題を経験しました。 – David

+0

私はこの行を削除し、やや動作していますが、それでも遅いことを発見しました after_fork do | server、worker | ActiveRecord :: Base.establish_connection end –

+0

この行を削除すると、ユニコーンサブプロセスの共有データベースハンドルに問題が発生するようです。私はちょうどプリロードアプリでデーモンモードでUnicornを走らせることができなくなった。プリロードアプリを無効にすると、問題が発生しなくなりました。 – David

答えて

0

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

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

0

私にとっては、データベース接続が正しく構成されていませんでした。時にはコンソールでこれを報告しているようですが、時にはスピンします。

関連する問題