3

Heroku でゼロ ダウンタイムのデプロイ戦略が可能かどうか疑問に思っていました。現在の Heroku ドキュメントでは、アプリをプッシュすると、アプリのリロードに約 1 分かかり、使用できなくなることがわかりました。ドキュメントのユニコーン コードはアプリをプリロードするので、なぜこれが起こっているのか混乱しています。私にできることはありますか?

https://devcenter.heroku.com/articles/rails-unicorn

新しい遺物アドオンと、弾性検索用の盆栽があります。

これが私の unicorn.rb 初期化子です:

# config/unicorn.rb
worker_processes Integer(ENV["WEB_CONCURRENCY"] || 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
4

1 に答える 1

5

更新 2014 年 11 月 14 日:

プリブートが一般に利用可能になりました (バンプの @camJackson に感謝します)。

変更ログ エントリ:

新しい (っぽい) デベロッパー センターの記事:


元の返信

これを行う唯一の現在の手段は、プリブート ラボ機能を使用することです。

プリブートは進行中の作業です。

Unicorn を使用しても、ここでは影響がないことに注意してください。そのコンテキストでのプリロードは、ワーカーを fork する前に Rails アプリをプリロードするマスター プロセスです。これは、新しい dyno がスピンアップしてサイクルアウトした後に発生します。

于 2013-04-22T21:36:55.830 に答える