what is the use of the pool option in database.yml

Salil picture Salil · Sep 28, 2012 · Viewed 17.9k times · Source

Most widely used options in database.yml are of following :

adapter
encoding
database
pool
username
password
socket
host
port
timeout

I know the use of the most of the above but pool. So i want to know what is the use of the pool option in database.yml or there is any other parameter which we need to set for the application having very heavy traffic.

Answer

moritz picture moritz · Sep 28, 2012

It sets the amount of possible connections per ruby process. So in case you are threading your rails app, or you use transactions excessively. The limits here depend on your setup. Consider this:

  • 50 ruby processes
  • each with 100 threads
  • a mysql with a setting of 1000 simultaneous connections

so it makes sense that every process can open at most 20 connections (50 * 20 == 1000) at a given time. So you would set the pool value to 20 or less.