rails 4.2升级后性能超级慢

时间:2015-01-19 17:19:54

标签: ruby-on-rails ruby-on-rails-4 heroku

我最近将rails从4.0.4升级到4.2,并且它的依赖性也是如此。我在puma服务器上运行我的应用程序,并且还将puma gem升级到最新的稳定版本。

问题是,在升级之后,我的大部分请求时间从1-2秒变为30+,导致Heroku超时

Puma连接文件

# Force heroku to bigger conenction pool
Rails.application.config.after_initialize do
  ActiveRecord::Base.connection_pool.disconnect!

  ActiveSupport.on_load(:active_record) do
    config = ActiveRecord::Base.configurations[Rails.env] || Rails.application.config.database_configuration[Rails.env]
    config['reaping_frequency'] = ENV['PUMA_DB_REAP_FREQ'] || 10 # Seconds
    config['pool']              = ENV['PUMA_DB_POOL'] || 20 # Puma can run up to 16 threads, perfect will be 80 (5x16), but heroku max is 20 for dev and basic
    ActiveRecord::Base.establish_connection(config)
  end
end

Gemfile(仅限相关宝石)

source 'https://rubygems.org'
ruby '2.0.0'
gem 'puma', '2.10.2'
gem 'rails', '~> 4.2.0'
gem 'pg', '~> 0.18.0'
gem 'heroku'
gem 'responders', '~> 2.0'

为什么要求时间发生这么大的变化?

2 个答案:

答案 0 :(得分:2)

Rails 4.2.0存在一些已知问题,自发布以来已经解决,包括:https://github.com/rails/rails/issues/18029。 4.2.1版本提供了一些可以更好地满足您需求的改进。

如果您使用Engine Yard运行4.2.1并且仍然遇到问题,请提交具有Engine Yard支持的票证,以便我们可以帮助您进一步调查。

答案 1 :(得分:0)

这个Rack问题:https://github.com/rails/rails/issues/18828导致开发速度大幅下降。

应用该线程中提到的修复:"使用选项[:OutputBufferSize] = 5注释掉rack-1.6.0 / lib / rack / handler / webrick.rb"。

你也可以编辑你的Gemfile并更新Rack来从master github repo服务,现在它已被修补了。它在下一个Rails版本中should be fixed(大概是4.2.2)。