16

通常我会将池大小设置为

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

在 database.yml 中。但是 heroku 替换了配置文件。我正在使用 girl_friday 做后台数据库工作,需要增加线程池大小。

4

5 回答 5

27

只需在您的 heroku 配置中添加一个pool查询参数。DATABASE_URL要在您的 heroku 应用程序中将池大小设置为 15,请使用以下内容:

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

于 2012-05-07T14:43:09.663 回答
12

对于它的价值,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
于 2013-04-15T15:09:37.987 回答
5

Heroku 现在有一篇关于管理池大小的好文章 - https://devcenter.heroku.com/articles/concurrency-and-database-connections#connection-pool

于 2013-04-23T16:22:59.623 回答
3

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
于 2012-08-21T17:29:43.560 回答
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

只需添加您需要的池大小。

然后,您可以使用自定义 buildpack 创建一个新的 Heroku 应用程序:

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

应该是这样!

于 2012-04-07T02:40:23.133 回答