我们有一个rails 3.2(.11)应用程序,其中有许多dynos运行在heroku bamboo堆栈上,连接到MySQL RDS服务器。我们当前的数据库连接似乎有一些问题,所以我们正在尝试调试每个dyno到底有多少连接。我知道我可以在heroku上的DATABASE_URL
配置中设置连接池的大小,但似乎找不到默认情况下当前使用的连接数。
两个主要问题:
1)我怎样才能找到heroku使用的连接池的大小?
2)为什么dyno需要一个大于1的连接池?我的理解是,rails一次只能执行一个请求,所以据我所知,一个数据库连接应该是所有需要的。
3条答案
按热度按时间tktrz96b1#
要检查池大小,请启动heroku控制台
heroku run rails c
,然后运行:一些Web服务器(如Puma)是多线程的,因此DB池的大小很重要。您还可以运行多线程工作线程,如Sidekiq,这也会受到池大小的影响。
注意Heroku会忽略你的database.yml文件。要设置池大小,您可以在heroku应用程序的配置中将
?pool=25
附加到DATABASE_URL。xv8emn3q2#
这些信息可以通过Rails中的一个界面https://github.com/rails/rails/blob/master/activerecord/lib/active_record/connection_handling.rb#L98-L106获得,它在Rails 3+中
你可以使用它来获取当前池的大小,而不需要eval或者依赖于未公开的示例变量的存在,但是在Rails 3中,如果没有显式设置,它可能会返回nil
k4ymrczo3#
你需要的是。
它会回来的。
如果你对多线程数据库工作感兴趣,请查看我的答案here。