通常我会将池大小设置为
development:
adapter: postgresql
encoding: unicode
database: openkitchen_development
username: rails
host: localhost
pool: 10
password:
在database.yml中的。但是heroku会替换配置文件。我正在使用girl_friday来 做后台数据库工作,需要增加线程池大小。
答案 0 :(得分:27)
只需将pool
查询参数添加到heroku配置中的DATABASE_URL
即可。要在heroku应用程序中将池大小设置为15,请使用以下内容:
heroku config -s | awk '/^DATABASE_URL=/{print $0 "?pool=15"}' | xargs heroku config:add
答案 1 :(得分:12)
对于它的价值,Heroku不推荐使用其他答案中描述的URL params方法。他们保留随时重置或更改此URL的权利,无论如何,很可能会为Rails构建行为删除此行为。
通过after-initialize应用程序回调设置其他参数是修改heroku-postgresql数据库per this dev center article配置的推荐方法。
在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
答案 2 :(得分:5)
Heroku现在有一篇关于管理池大小的好文章 - https://devcenter.heroku.com/articles/concurrency-and-database-connections#connection-pool
答案 3 :(得分:3)
remvee的答案触及了所需要的核心,但由于他的命令导致我的控制台挂起,我想我会写下如何手动执行此操作。
heroku config
查找DATABASE_URL键。对于这个例子,我们可以说:
DATABASE_URL: mysql2://something.example.com/stuff?reconnect=true
将“& pool = 10”添加到网址的末尾(使用&而不是?因为网址已经有参数)
heroku config:add DATABASE_URL=mysql2://something.example.com/stuff?reconnect=true&pool=10
答案 4 :(得分:2)
这不是很直接,但你可以尝试创建自己的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应用程序:
heroku create --stack cedar --buildpack https://github.com/yourgithubusername/heroku-buildpack-ruby.git
那应该是它!