我最近将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'
为什么要求时间发生这么大的变化?
答案 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)。