2

次の unicorn.rb ファイルを使用して、Unicorn (4.5.0) を使用して Heroku Celadon cedar スタックにデプロイされた Rails アプリケーションがあります。

worker_processes 2 # amount of unicorn workers to spin up
timeout 30         # restarts workers that hang for 30 seconds
check_client_connection true

ユニコーンが使用するサービス (DB を含む) に目立った変更がない場合、一見ランダムな時間に、ユニコーンは再起動ループに入ります。次の典型的なエラーで再起動し続けます。

ERROR -- : worker=0 PID:935 timeout (31s > 30s), killing

問題は、ユニコーン ワーカーごとに 30 秒ごとよりも頻繁に再起動し続けることです。基になるdynoが再起動されると停止するので、ユニコーンマスタープロセスとherokuの相互作用に関係があると思います.

他の誰かがこれを経験していますか、または何が原因であるかについて何か考えがありますか?

4

1 に答える 1

0

check_client_connection trueこのオプションは使用しないでください。

Heroku Unicorn のドキュメントによると、次のような構成ファイルを使用する必要があります。

# config/unicorn.rb
worker_processes 3
timeout 15
preload_app true

before_fork do |server, worker|

  Signal.trap 'TERM' do
    puts 'Unicorn master intercepting TERM and sending myself QUIT instead'
    Process.kill 'QUIT', Process.pid
  end

  defined?(ActiveRecord::Base) and
    ActiveRecord::Base.connection.disconnect!
end  

after_fork do |server, worker|

  Signal.trap 'TERM' do
    puts 'Unicorn worker intercepting TERM and doing nothing. Wait for master to send QUIT'
  end

  defined?(ActiveRecord::Base) and
    ActiveRecord::Base.establish_connection
end
于 2013-03-04T20:16:06.743 に答える