通常我会将池大小设置为
development:
adapter: postgresql
encoding: unicode
database: openkitchen_development
username: rails
host: localhost
pool: 10
password:
在 database.yml 中。但是 heroku 替换了配置文件。我正在使用 girl_friday 做后台数据库工作,需要增加线程池大小。
通常我会将池大小设置为
development:
adapter: postgresql
encoding: unicode
database: openkitchen_development
username: rails
host: localhost
pool: 10
password:
在 database.yml 中。但是 heroku 替换了配置文件。我正在使用 girl_friday 做后台数据库工作,需要增加线程池大小。
只需在您的 heroku 配置中添加一个pool
查询参数。DATABASE_URL
要在您的 heroku 应用程序中将池大小设置为 15,请使用以下内容:
heroku config -s | awk '/^DATABASE_URL=/{print $0 "?pool=15"}' | xargs heroku config:add
对于它的价值,Heroku 不建议使用此处其他答案中描述的 URL 参数方法。他们保留随时重置或更改此 URL 的权利,而且从长远来看,这种行为可能会因 Rails 构建行为而被删除,无论如何。
根据这篇开发中心文章,建议通过初始化后应用程序回调设置其他参数来修改 heroku-postgresql 数据库的配置。
在 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
Heroku 现在有一篇关于管理池大小的好文章 - https://devcenter.heroku.com/articles/concurrency-and-database-connections#connection-pool
remvee 的回答触及了所需的核心,但由于他的命令导致我的控制台挂起,我想我会写下如何手动执行此操作。
heroku config
查找 DATABASE_URL 键。对于此示例,可以说它是:
DATABASE_URL: mysql2://something.example.com/stuff?reconnect=true
在 URL 末尾添加“&pool=10”(使用 & 代替 ?,因为 url 已经有参数)
heroku config:add DATABASE_URL=mysql2://something.example.com/stuff?reconnect=true&pool=10
这不是很简单,但您可以尝试创建自己的 buildpack。
你需要分叉: https ://github.com/heroku/heroku-buildpack-ruby
然后修改以下内容: https ://github.com/heroku/heroku-buildpack-ruby/blob/master/lib/language_pack/ruby.rb#L325-387
只需添加您需要的池大小。
然后,您可以使用自定义 buildpack 创建一个新的 Heroku 应用程序:
heroku create --stack cedar --buildpack https://github.com/yourgithubusername/heroku-buildpack-ruby.git
应该是这样!