4

ユニコーンワーカーがリクエストを処理する準備が本当に整ったときにのみ接続を受け入れるようにする方法がわかりません。最初のいくつかのリクエストは遅く、その後劇的に高速化することがわかりました (数秒から 100 ミリ秒程度まで)。この問題は、ユニコーンが一定時間後にワーカーを殺すように見えるという事実によって悪化しているようです。つまり、最初のリクエストが遅いことによるパフォーマンスの低下に常に直面しています。他の誰かがこれを見たことがありますか、それとも私に何ができるか考えていますか?

4

1 に答える 1

6

i18n yml ファイルが最初のリクエストでビューに遅延ロードされていることがパフォーマンスの問題の原因であることが判明しました。config/unicorn.rb に以下を追加するだけで問題が解決したようです:

before_fork do |server, worker|
  # The following is highly recomended for Rails + "preload_app true" as
  # there's no need for the master process to hold a connection.
  defined?(ActiveRecord::Base) and
    ActiveRecord::Base.connection.disconnect!

  # No need to disconnect from Redis servers--they are connected to lazily.

  # Force translations to be loaded into memory.
  I18n.t('activerecord')
end
于 2012-11-06T05:47:01.127 に答える