How rails database connection pool works

前端 未结 2 1668
无人及你
无人及你 2021-02-07 05:04

I am learning rails database connection pool concept. In rails application I have defined pool size of 5.

my understanding about connection pool size is as below.

2条回答
  •  长情又很酷
    2021-02-07 05:36

    Yes, from the docs:

    A connection pool synchronizes thread access to a limited number of database connections. The basic idea is that each thread checks out a database connection from the pool, uses that connection, and checks the connection back in. ConnectionPool is completely thread-safe, and will ensure that a connection cannot be used by two threads at the same time, as long as ConnectionPool's contract is correctly followed. It will also handle cases in which there are more threads than connections: if all connections have been checked out, and a thread tries to checkout a connection anyway, then ConnectionPool will wait until some other thread has checked in a connection.

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

    If you use something like unicorn as http server:

    In Unicorn each process establishes its own connection pool, so you if your db pool setting is 5 and you have 5 Unicorn workers then you can have up to 25 connections. However, since each unicorn worker can handle only one connection at a time, then unless your app uses threading internally each worker will only actually use one db connection.

提交回复
热议问题