【问题标题】:rails + maximum connection pool size in database.ymlrails + database.yml 中的最大连接池大小
【发布时间】:2013-03-07 10:45:50
【问题描述】:

我可以在 database.yml 中设置的最大池大小是多少?我正在使用 Mysql 数据库。

我有 20 个独角兽进程在 24 核、32GB RAM 的机器上运行。

【问题讨论】:

    标签: mysql ruby-on-rails connection database-connection


    【解决方案1】:

    MySQL 中的默认配置是 100 个连接。

    来自 MySQL 5.5 页面

    Linux 或 Solaris 通常能够支持 500 到 1000 个同时连接,如果您有许多 GB 的可用 RAM 并且每个连接的工作负载很低或响应时间目标要求不高,则可以支持多达 10,000 个连接。由于该平台上使用了 Posix 兼容层,Windows 被限制为(打开的表 × 2 + 打开的连接)

    您必须自己弄清楚,我认为与数据库的同时连接不会成为您的瓶颈。

    来自 Rails 连接池:

    连接池将线程访问同步到有限数量的数据库连接。基本思想是每个线程从池中检出一个数据库连接,使用该连接,然后再检入该连接。 ConnectionPool 是完全线程安全的,将确保一个连接不能被两个线程同时使用,只要正确遵循 ConnectionPool 的合同。它还将处理线程多于连接的情况:如果所有连接都已签出,并且一个线程无论如何都尝试签出一个连接,那么 ConnectionPool 将等待,直到某个其他线程签入一个连接。

    所以你唯一不应该做的就是在 Rails 池大小中的连接比在你的 mysql 配置中更多。

    【讨论】:

    • 但这是最大连接数。这和 Rails 连接池一样吗?
    猜你喜欢
    • 2011-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-06
    • 1970-01-01
    • 1970-01-01
    • 2013-05-31
    • 2012-04-30
    相关资源
    最近更新 更多