我们有一个Rails 3.2(0.11)与Heroku的竹堆栈上运行许多DYNOS,连接到MySQL RDS服务器应用程序。 似乎有一些问题与我们目前的数据库连接,所以我们正在努力调试每个赛道的到底有多少连接旋转起来。 我知道我可以设置在连接池的大小DATABASE_URL
在Heroku上的配置,但似乎无法找出多少个连接当前正在使用的默认。
两个主要问题:
1)我怎样才能找到的Heroku使用的连接池的大小?
2)是否有任何理由为什么赛道需要一个连接池大小大于1? 我的理解是,导轨只能同时执行1个请求,以便有一个数据库连接应尽可能我可以看到所有需要。
要检查池大小,启动Heroku的控制台heroku run rails c
,然后运行:
ActiveRecord::Base.connection_pool.size
一些网络服务器如彪马是多线程的,所以DB池的大小事宜。 您还可以运行多线程工人如Sidekiq,这也将在游泳池大小的影响。
需要注意的是Heroku的会忽视你的database.yml文件。 池大小可以追加设置?pool=25
在你的Heroku应用程序的configuation的DATABASE_URL。
这些信息通过Rails中的接口可用https://github.com/rails/rails/blob/master/activerecord/lib/active_record/connection_handling.rb#L98-L106它是在Rails的3+
ActiveRecord::Base.connection_config
# => {:adapter=>"postgresql", :encoding=>"utf8", :pool=>5, :host=>"localhost", :database=>"triage_development"}
您可以使用它来获取当前池的大小,而无需EVAL或在轨道3但是依靠一个未曝光的实例变量的存在,它可能会返回零如果它没有明确设置
ActiveRecord::Base.connection_config[:pool]
# => 5