如何增加在Heroku
ActiveRecord的线程池的大小通常我会设置池大小如何增加在Heroku
development:
adapter: postgresql
encoding: unicode
database: openkitchen_development
username: rails
host: localhost
pool: 10
password:
在database.yml中。但是,heroku会替换配置文件。我使用girl_friday来 做后台数据库工作,需要增加线程池的大小。
只需在您的heroku配置文件中将pool
查询参数添加到DATABASE_URL
即可。要设置池的大小至15日在您的Heroku应用程序使用类似:
heroku config -s | awk '/^DATABASE_URL=/{print $0 "?pool=15"}' | xargs heroku config:add
这不是很直接,但你可以尝试创建自己的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
这应该是它!
这是矫枉过正 – 2012-09-25 10:08:25
remvee的回答到达需要什么的心脏,但因为他的命令引起了我的控制台挂,我想我会写了如何手动完成此操作。
heroku config
查找DATABASE_URL键。在这个例子中可以说是:
DATABASE_URL: mysql2://something.example.com/stuff?reconnect=true
添加“&池= 10”,将网址的结尾(?使用&,而不是因为网址中已有参数)
heroku config:add DATABASE_URL=mysql2://something.example.com/stuff?reconnect=true&pool=10
对于值得一提的是,Heroku并不推荐使用其他答案中描述的URL params方法。他们保留在任何时候重置或更改此URL的权利,无论如何,长期来看,这种行为很可能会被移除以适应Rails构建行为。
通过初始化后应用程序回调设置其他参数是修改您的heroku-postgresql数据库配置的建议方法per this dev center article。
在配置/初始化/ 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
很好的解决方案:) – bradgonesurfing 2012-05-07 15:03:53
我不明白怎么这样可行。 'DATABASE_URL'是一个在你所有的dynos和worker之间共享的配置,不会影响Rails进程的池大小。每个Heroku DB计划已经有一个最大连接限制。我怀疑调整数据库URL会增加这个限制。 – 2012-12-06 19:18:58
你是对的,它不会增加数据库的最大连接限制。它所做的是告诉每个进程创建它自己的这个大小的池。所以如果你的数据库的最大conn限制为20,并且你有4个dynos,你可以设置一个5的池大小。但是你可能只需要4,因为一个进程(scheduler,heroku run等)需要一个数据库连接。 – mpoisot 2013-03-25 15:49:41