如何找到在Heroku当前连接池的大小(How to find current connection

2019-08-08 07:15发布

我们有一个Rails 3.2(0.11)与Heroku的竹堆栈上运行许多DYNOS,连接到MySQL RDS服务器应用程序。 似乎有一些问题与我们目前的数据库连接,所以我们正在努力调试每个赛道的到底有多少连接旋转起来。 我知道我可以设置在连接池的大小DATABASE_URL在Heroku上的配置,但似乎无法找出多少个连接当前正在使用的默认。

两个主要问题:

1)我怎样才能找到的Heroku使用的连接池的大小?

2)是否有任何理由为什么赛道需要一个连接池大小大于1? 我的理解是,导轨只能同时执行1个请求,以便有一个数据库连接应尽可能我可以看到所有需要。

Answer 1:

要检查池大小,启动Heroku的控制台heroku run rails c ,然后运行:

ActiveRecord::Base.connection_pool.size

一些网络服务器如彪马是多线程的,所以DB池的大小事宜。 您还可以运行多线程工人如Sidekiq,这也将在游泳池大小的影响。

需要注意的是Heroku的会忽视你的database.yml文件。 池大小可以追加设置?pool=25在你的Heroku应用程序的configuation的DATABASE_URL。



Answer 2:

这些信息通过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


文章来源: How to find current connection pool size on heroku