rails + database.yml中的最大连接池大小

时间:2013-03-07 10:45:50

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

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

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

1 个答案:

答案 0 :(得分:5)

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

来自MySQL 5.5页面

  

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

你必须自己解决这个问题,我认为与数据库的同时连接不会成为你的瓶颈。

来自Rails ConnectionPool:

  

连接池将线程访问与有限数量的数据库连接同步。基本思想是每个线程从池中检出数据库连接,使用该连接并重新检入连接.ConnectionPool完全是线程安全的,并且将确保两个线程不能同时使用连接,只要正确遵循ConnectionPool的合同。它还将处理线程多于连接的情况:如果所有连接都已检出,并且线程尝试检查连接,则ConnectionPool将等待其他线程检查连接。

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