2

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

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

4

1 回答 1

6

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

来自 MySQL 5.5 页面

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

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

从 Rails 连接池:

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

因此,您唯一不应该做的就是在 Rails 池大小中拥有比在 mysql 配置中更多的连接。

于 2013-03-07T10:49:35.447 回答