独角兽工人的第一反应慢了几秒钟

时间:2012-11-02 05:52:28

标签: ruby-on-rails ruby unicorn

我无法弄清楚如何让我的独角兽工人在他们真正“准备好”处理请求时才接受连接。我发现前几个请求很慢,然后它们会急剧加速(从几秒到几百毫秒)。这个问题似乎更加复杂,因为独角兽似乎在一段时间后杀死了工人,这意味着我经常面临缓慢的第一次请求的性能损失。有没有人看过这个或者知道我能做些什么?

1 个答案:

答案 0 :(得分: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