【问题标题】:What is a database Connection Limit and how does ActiveRecord handle it?什么是数据库连接限制以及 ActiveRecord 如何处理它?
【发布时间】:2014-05-31 21:00:48
【问题描述】:

什么是数据库“连接限制”,如下所示:

https://addons.heroku.com/marketplace/heroku-postgresql

如果我有一个查询数据库的 ruby​​ 应用程序,并且同时发出 100 个请求,那么数据库连接限制如何发挥作用?

是否有 80 个请求被拒绝?排队?

每个查询是一个单独的连接还是多个查询由一个连接处理?

我正在使用 ActiveRecord。提前致谢!

【问题讨论】:

    标签: ruby-on-rails ruby postgresql activerecord heroku


    【解决方案1】:

    Active Record 通过线程使用连接池机制来管理数据库连接。创建一个数据库连接池,然后在需要访问数据库的应用程序之间共享。当应用程序需要访问数据库时,它会从池中请求连接。完成后,它将连接返回到池中,供其他应用程序或请求使用。 活动记录通过连接池类实现,它是线程安全的。根据您的示例,如果连接数已满且池已满,它们将排队并设置超时。请求完成后,处理其他请求。默认情况下,连接池设置为 5,超时时间为 5 秒。

    【讨论】:

      【解决方案2】:

      这里的连接限制是指您可以针对数据库打开的最大后端连接数。

      在您的示例中,计数取决于您的应用程序的并发性。如果您的应用程序是单线程的并且您使用 1 个测功机,那么这些请求将按顺序处理,您可能只使用 1 个数据库连接。

      如果您使用 Unicorn 之类的设备和 4 个工作人员,则大约有 4 个数据库连接。

      这个 DevCenter 扩展了连接:

      【讨论】:

        猜你喜欢
        • 2019-04-19
        • 2018-02-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-12
        • 2012-08-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多