【问题标题】:What is a database Connection Limit and how does ActiveRecord handle it?什么是数据库连接限制以及 ActiveRecord 如何处理它?
【发布时间】:2014-05-31 21:00:48
【问题描述】:
【问题讨论】:
标签:
ruby-on-rails
ruby
postgresql
activerecord
heroku
【解决方案1】:
Active Record 通过线程使用连接池机制来管理数据库连接。创建一个数据库连接池,然后在需要访问数据库的应用程序之间共享。当应用程序需要访问数据库时,它会从池中请求连接。完成后,它将连接返回到池中,供其他应用程序或请求使用。
活动记录通过连接池类实现,它是线程安全的。根据您的示例,如果连接数已满且池已满,它们将排队并设置超时。请求完成后,处理其他请求。默认情况下,连接池设置为 5,超时时间为 5 秒。
【解决方案2】:
这里的连接限制是指您可以针对数据库打开的最大后端连接数。
在您的示例中,计数取决于您的应用程序的并发性。如果您的应用程序是单线程的并且您使用 1 个测功机,那么这些请求将按顺序处理,您可能只使用 1 个数据库连接。
如果您使用 Unicorn 之类的设备和 4 个工作人员,则大约有 4 个数据库连接。
这个 DevCenter 扩展了连接: