Ruby on rails 从Rails 3升级到Rails 4会导致页面加载时间异常缓慢

Ruby on rails 从Rails 3升级到Rails 4会导致页面加载时间异常缓慢,ruby-on-rails,ruby-on-rails-3,ruby-on-rails-4,Ruby On Rails,Ruby On Rails 3,Ruby On Rails 4,我正在将一个应用程序从Rails 3(最新版本)升级到Rails 4.0。这导致页面加载时间极其缓慢。在一种情况下,以前在不到一秒钟内呈现的页面现在需要4个多小时才能加载 我们一直在尝试分析该应用程序,但迄今为止一无所获 Before Rails 3.2.19 Ruby 1.9.3-p547 After Rails 4.0.13 Ruby 1.9.3-p547 [此外,我知道这不是一个很好的问题,因为我没有提供足够的详细信息。我会在获得更多信息时编辑和添加详细信息,和/或如果您能提供详细

我正在将一个应用程序从Rails 3(最新版本)升级到Rails 4.0。这导致页面加载时间极其缓慢。在一种情况下,以前在不到一秒钟内呈现的页面现在需要4个多小时才能加载

我们一直在尝试分析该应用程序,但迄今为止一无所获

Before

Rails 3.2.19
Ruby 1.9.3-p547

After

Rails 4.0.13
Ruby 1.9.3-p547

[此外,我知道这不是一个很好的问题,因为我没有提供足够的详细信息。我会在获得更多信息时编辑和添加详细信息,和/或如果您能提供详细信息帮助我提供更多反馈。我不想对我的帖子含糊其辞。我只是现在没什么要说的。]

事实证明,这是rails观察者创业板的一个性能问题。它可能与Github上描述的这个问题有关

我们最终修补了ActiveModel::Observer,因为在发布此修补程序时,该修补程序尚未发布

# config/initializers/rails_observer_monkey_patch.rb
Rails.configuration.to_prepare do
  ActiveModel::Observer.class_eval do
    def self.observe(*models)
      models.flatten!
      models.collect! { |model| model.respond_to?(:to_sym) ? model.to_s.camelize.constantize : model }
      redefine_method(:observed_classes) { models }
    end
  end
end

事实证明,这是rails观察者gem中的一个性能问题。它可能与Github上描述的这个问题有关

我们最终修补了ActiveModel::Observer,因为在发布此修补程序时,该修补程序尚未发布

# config/initializers/rails_observer_monkey_patch.rb
Rails.configuration.to_prepare do
  ActiveModel::Observer.class_eval do
    def self.observe(*models)
      models.flatten!
      models.collect! { |model| model.respond_to?(:to_sym) ? model.to_s.camelize.constantize : model }
      redefine_method(:observed_classes) { models }
    end
  end
end

加载一个页面究竟需要4个小时?web服务器允许这么长的请求吗?你可以先分析你的应用程序,或者在开发模式下使用New Relic来找到瓶颈。@spickermann我加入了New Relic和Ruby prof,具有讽刺意味的是,New Relic抛出了一堆异常,所以我们无法从中得到任何有用的东西。我们正在努力解决这个问题,同时也在采取其他方法进行评测。一个页面加载到底需要4个小时?web服务器允许这么长的请求吗?你可以先分析你的应用程序,或者在开发模式下使用New Relic来找到瓶颈。@spickermann我加入了New Relic和Ruby prof,具有讽刺意味的是,New Relic抛出了一堆异常,所以我们无法从中得到任何有用的东西。我们正在努力解决这个问题,同时也在采取其他方法进行分析。