Как увеличить размер пула потоков ActiveRecord на героку
Обычно я задавал размер пула как
development:
adapter: postgresql
encoding: unicode
database: openkitchen_development
username: rails
host: localhost
pool: 10
password:
в database.yml. Однако геройку заменяет файл конфигурации. Я использую girl_friday для
выполните фолд db и нужно увеличить размер пула потоков.
Ответы
Ответ 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
Ответ 3
В Heroku теперь есть хорошая статья об управлении размерами пула - https://devcenter.heroku.com/articles/concurrency-and-database-connections#connection-pool
Ответ 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
Это должно быть!