我们有一个带有许多dynos的Rails3.2(.11)应用程序运行在heroku竹子堆栈上,连接到MySQL RDS服务器。我们当前的数据库连接似乎有一些问题,所以我们正在尝试调试每个dyno正在旋转的确切连接数。我知道我可以在heroku上的DATABASE_URL
配置中设置连接池的大小,但似乎找不到默认情况下当前使用了多少连接。
两个主要问题:
1)如何查询heroku使用的连接池大小?
2)为什么dyno需要大于1的连接池大小?我的理解是rails一次只能执行一个请求,所以在我看来,一个数据库连接应该就足够了。
发布于 2013-02-02 07:26:36
要检查池大小,请启动heroku控制台heroku run rails c
,并运行:
ActiveRecord::Base.connection_pool.size
有些the服务器是多线程的,所以DB池的大小很重要。您还可以运行多线程工作线程,比如Sidekiq,它也会受到池大小的影响。
请注意,Heroku将忽略您的database.yml文件。要设置池大小,您可以在heroku应用程序的配置中将?pool=25
附加到DATABASE_URL。
发布于 2014-07-25 03:11:14
此信息可通过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"}
您可以使用它来获取当前的池大小,而不需要计算或依赖于未公开的实例变量的存在,但是在Rails3中,如果没有显式设置它,它可能会返回nil
ActiveRecord::Base.connection_config[:pool]
# => 5
https://stackoverflow.com/questions/14528371
复制相似问题