Как увеличить размер пула потоков ActiveRecord на героку - программирование
Подтвердить что ты не робот

Как увеличить размер пула потоков ActiveRecord на героку

Обычно я задавал размер пула как

development:
  adapter: postgresql
  encoding: unicode
  database: openkitchen_development
  username: rails
  host: localhost
  pool: 10
  password:

в database.yml. Однако геройку заменяет файл конфигурации. Я использую girl_friday для выполните фолд db и нужно увеличить размер пула потоков.

4b9b3361

Ответ 1

Просто добавьте параметр запроса pool в DATABASE_URL в конфигурацию heroku. Чтобы установить размер пула в 15 в приложении heroku, используйте что-то вроде:

heroku config -s | awk '/^DATABASE_URL=/{print $0 "?pool=15"}' | xargs heroku config:add

Ответ 2

Для того, что стоит, использование метода URL params, как описано в других ответах, здесь не рекомендуется Heroku. Они оставляют за собой право на reset или изменить этот URL в любое время, и в долгосрочной перспективе это поведение, скорее всего, будет удалено для поведения сборки Rails.

Установка дополнительных параметров через обратный вызов приложения после инициализации - это рекомендуемый способ изменения конфигурации баз данных heroku-postgresql за эту статью dev center.

В config/initializers/database_connection.rb:

Rails.application.config.after_initialize do
  ActiveRecord::Base.connection_pool.disconnect!

  ActiveSupport.on_load(:active_record) do
    config = Rails.application.config.database_configuration[Rails.env]
    config['pool']              = 10
    ActiveRecord::Base.establish_connection(config)
  end
end

Ответ 4

remvee answer попадает в суть того, что нужно, но поскольку его команда заставила мою консоль висеть, я подумал, что напишу, как это сделать вручную.

heroku config

Найдите ключ DATABASE_URL. В этом примере можно сказать, что это:

DATABASE_URL:            mysql2://something.example.com/stuff?reconnect=true

Добавьте "& pool = 10" в конец URL-адреса (используйте и вместо?, потому что url уже имеет параметр)

heroku config:add DATABASE_URL=mysql2://something.example.com/stuff?reconnect=true&pool=10

Ответ 5

Это не очень прямо, но вы можете попробовать создать свой собственный buildpack.

Вы можете развить вилку: https://github.com/heroku/heroku-buildpack-ruby

Затем измените следующее: https://github.com/heroku/heroku-buildpack-ruby/blob/master/lib/language_pack/ruby.rb#L325-387

Просто добавьте необходимый размер пула.

Затем вы можете создать новое приложение Heroku со своим пользовательским buildpack:

heroku create --stack cedar --buildpack https://github.com/yourgithubusername/heroku-buildpack-ruby.git

Это должно быть!