【发布时间】:2013-03-07 10:45:50
【问题描述】:
我可以在 database.yml 中设置的最大池大小是多少?我正在使用 Mysql 数据库。
我有 20 个独角兽进程在 24 核、32GB RAM 的机器上运行。
【问题讨论】:
标签: mysql ruby-on-rails connection database-connection
我可以在 database.yml 中设置的最大池大小是多少?我正在使用 Mysql 数据库。
我有 20 个独角兽进程在 24 核、32GB RAM 的机器上运行。
【问题讨论】:
标签: mysql ruby-on-rails connection database-connection
MySQL 中的默认配置是 100 个连接。
来自 MySQL 5.5 页面
Linux 或 Solaris 通常能够支持 500 到 1000 个同时连接,如果您有许多 GB 的可用 RAM 并且每个连接的工作负载很低或响应时间目标要求不高,则可以支持多达 10,000 个连接。由于该平台上使用了 Posix 兼容层,Windows 被限制为(打开的表 × 2 + 打开的连接)
您必须自己弄清楚,我认为与数据库的同时连接不会成为您的瓶颈。
来自 Rails 连接池:
连接池将线程访问同步到有限数量的数据库连接。基本思想是每个线程从池中检出一个数据库连接,使用该连接,然后再检入该连接。 ConnectionPool 是完全线程安全的,将确保一个连接不能被两个线程同时使用,只要正确遵循 ConnectionPool 的合同。它还将处理线程多于连接的情况:如果所有连接都已签出,并且一个线程无论如何都尝试签出一个连接,那么 ConnectionPool 将等待,直到某个其他线程签入一个连接。
所以你唯一不应该做的就是在 Rails 池大小中的连接比在你的 mysql 配置中更多。
【讨论】: