1

これまでのところ、シンサーバーを使用しています。Web dyno にいくらかの並行性を追加するために Unicorn に切り替えることを計画しています。この記事を読み、次のコードを見つけたので心配しています。

before_fork do |server, worker|
  # ...
 
  # If you are using Redis but not Resque, change this
  if defined?(Resque)
    Resque.redis.quit
    Rails.logger.info('Disconnected from Redis')
  end
end
 
after_fork do |server, worker|
  # ...
 
  # If you are using Redis but not Resque, change this
  if defined?(Resque)
    Resque.redis = ENV['REDIS_URI']
    Rails.logger.info('Connected to Redis')
  end
end

このコードが必要な理由と、Resque を使用するときに追加する必要があるかどうかはよくわかりません。

Resque ワーカーを使用している場合、Unicorn に切り替える際に考慮すべきことは何だと思いますか?

4

1 に答える 1

0

Unicorn は、分岐するマルチプロセス サーバーです。Rails 環境を 1 つのプロセスでロードし、多数のワーカーをフォークします。を使用forkすると、データベース、memcache、redis などへの開いている接続を含む、親プロセス全体がコピーされます。

after_forkこれを修正するには、例に示すように、ブロック内のライブ接続を再接続する必要があります。使用している接続/サービスを再接続するだけで済みます。

于 2013-08-06T17:58:42.050 に答える