Супер медленная производительность после восстановления рельсов 4.2

Недавно я обновил рельсы с 4.0.4 до 4.2, и это тоже зависит. Я запускаю свое приложение на сервере puma, и я также обновил жемчужину puma до последней стабильной версии.

Проблема заключается в том, что после обновления большинство моих запросов длилось от 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'

Любая идея относительно того, почему произошло это огромное изменение в запросах?

Ответ 1

Есть некоторые известные проблемы для Rails 4.2.0, которые были рассмотрены с момента публикации, включая: https://github.com/rails/rails/issues/18029. В выпуске 4.2.1 содержатся некоторые улучшения, которые могли бы лучше удовлетворить ваши потребности.

Если вы используете 4.2.1 с Engine Yard и по-прежнему испытываете проблемы, пожалуйста, напишите билет с поддержкой Engine Yard Support, чтобы мы могли помочь вам исследовать это дальше.

Ответ 2

Вот эта проблема в стойке: https://github.com/rails/rails/issues/18828, которая вызвала серьезные замедления в развитии.

Примените исправление, упомянутое в этом потоке: "С опциями [: OutputBufferSize] = 5 закомментировано из rack-1.6.0/lib/rack/handler/webrick.rb".

Вы также можете отредактировать свою Gemfile и обновленную стойку, которая будет обслуживаться из master github repo, теперь, когда она была исправлена. Это должно быть исправлено в следующей версии Rails (предположительно 4.2.2).