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