Ruby on Rails 3 - 如何在 heroku 上查找当前连接池大小



我们有一个rails 3.2(.11)应用程序,其中有许多dynos在heroku bamboo stack上运行,连接到MySQL RDS服务器。我们当前的数据库连接似乎存在一些问题,因此我们正在尝试调试每个测功机正在启动的连接数。我知道我可以在 heroku 上的DATABASE_URL配置中设置连接池的大小,但似乎无法找出当前默认正在使用的连接数。

两个主要问题:

1) 如何找到 heroku 使用的连接池的大小?

2) 测功机需要大于 1 的连接池大小有什么原因吗?我的理解是,rails 一次只能执行 1 个请求,因此据我所知,应该只需要一个数据库连接。

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

ActiveRecord::Base.connection_pool.size

一些 Web 服务器(如 Puma)是多线程的,因此数据库池的大小很重要。您还可以运行多线程工作线程,例如 Sidekiq,这也将受到池大小的影响。

请注意,Heroku 将忽略您的 database.yml 文件。要设置池大小,您可以将?pool=25附加到 heroku 应用程序配置中的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"}

您可以使用它来获取当前池大小,而无需评估或依赖未公开实例变量的存在,但是在 rails 3 中,如果未显式设置,则可能会返回 nil

ActiveRecord::Base.connection_config[:pool]
# => 5

相关内容

  • 没有找到相关文章

最新更新