web-dev-qa-db-ja.com

database.ymlのプールオプションの使用方法

Database.ymlで最も広く使用されているオプションは次のとおりです。

adapter
encoding
database
pool
username
password
socket
Host
port
timeout

上記以外はほとんどプールの使用を知っています。それで、database.ymlのプールオプションの使用方法を知りたいか、またはトラフィックが非常に多いアプリケーション用に設定する必要がある他のパラメーターがあります。

39
Salil

Rubyプロセスごとに可能な接続の量を設定します。そのため、Railsアプリをスレッド化している場合、またはトランザクションを過度に使用している場合。ここでの制限は、これを考慮してください:

  • 50 Rubyプロセス
  • それぞれ100スレッド
  • 1000の同時接続の設定を持つmysql

したがって、すべてのプロセスが同時に最大20の接続(50 * 20 == 1000)を開くことができるのは理にかなっています。したがって、pool値を20以下に設定します。

29
moritz

この質問への回答を探している他の誰にとっても、基本的な考え方は、データベースは非常に多くの同時接続しかサポートできないため、開いている接続を制限する方法が必要であるようです。 pool属性は、同時に開くことができる接続の最大数を指定します。

詳細については、 http://guides.rubyonrails.org/configuring.html#database-pooling を参照してください。ガイドは、プールがアプリの合計接続数であることを明示的に述べていませんが、それは私がそれを読んだ後に得られる感覚です。

4

poolは接続プールのサイズの設定で、デフォルトでは5です。

http://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/ConnectionPool.html

1
xdazz