Rails and database connection pooling

17 views
Skip to first unread message

Joshua Partogi

unread,
Sep 5, 2010, 9:57:18 AM9/5/10
to rubyonra...@googlegroups.com
Hi all,

I am interested to learn more about connection pooling in rails. Is there any good articles about this? I want to know specifically how is connection pooling in rails works. Does rails open one connection to the database for every user that is connected or does every user share the same database connection? Does different app server handles connection pooling differently [i.e passenger, unicorn, mongrel, thin] ? Or does app server doesn't really care about this?

Thank you very much in advance for your help and insights.


Kind regards,
Joshua.

--
http://twitter.com/scrum8

Nick Sieger

unread,
Sep 5, 2010, 2:32:27 PM9/5/10
to rubyonra...@googlegroups.com

Hi Joshua,

Here are some facts about connection pooling that should answer your questions:

* Connection pooling is handled inside of ActiveRecord, so all
application servers should behave basically the same.

* The database connection pool starts out empty and creates
connections over time according to demand. The maximum size of this
pool defaults to 5 and is configured in database.yml.

* Requests and users share connections from this pool. A request
checks out a connection the first time it needs to access the database
and then checks the connection back in at the end of the request.

* If you use Rails.threadsafe! mode, then multiple threads might be
accessing multiple connections at the same time, so depending on the
request load you might have multiple threads contending for a few
connections.

/Nick

Joshua Partogi

unread,
Sep 15, 2010, 6:08:52 PM9/15/10
to Ruby on Rails: Talk
Hi Nick,

Thank you for the response. You mentioned that database connection
pool is created according to demand. What does that mean? Does it mean
if there are more users it will open more connection thus create more
connection pool?

Thanks heaps in advance.

Kind regards,
Joshua

On Sep 6, 4:32 am, Nick Sieger <nicksie...@gmail.com> wrote:

Nick Sieger

unread,
Sep 16, 2010, 9:12:16 AM9/16/10
to rubyonra...@googlegroups.com
On Wed, Sep 15, 2010 at 5:08 PM, Joshua Partogi
<joshua....@gmail.com> wrote:
> Hi Nick,
>
> Thank you for the response. You mentioned that database connection
> pool is created according to demand. What does that mean? Does it mean
> if there are more users it will open more connection thus create more
> connection pool?

Yes. What I meant to say is that the pool starts out empty and only
grows as connections are needed up to the maximum pool size. If you
are running non-thread-safe Rails with a request mutex, chances are
that you won't create more than one connection.

/Nick

> --
> You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
> To post to this group, send email to rubyonra...@googlegroups.com.
> To unsubscribe from this group, send email to rubyonrails-ta...@googlegroups.com.
> For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
>
>

Joshua Partogi

unread,
Sep 17, 2010, 1:36:20 AM9/17/10
to Ruby on Rails: Talk
Thanks Nick. You have been really helpful. I am just trying to figure
out how this is different to connection pooling in the Java land. =)

Cheers,
Joshua.

On Sep 16, 11:12 pm, Nick Sieger <nicksie...@gmail.com> wrote:
> On Wed, Sep 15, 2010 at 5:08 PM, Joshua Partogi
>

Nitin Mathur

unread,
Sep 27, 2010, 1:52:24 AM9/27/10
to rubyonra...@googlegroups.com
Joshua Partogi wrote:
> Thanks Nick. You have been really helpful. I am just trying to figure
> out how this is different to connection pooling in the Java land. =)
>
> Cheers,
> Joshua.

Hi Joshua/Nick,
I have one question related to multiple database session in
ruby on rails. Can I have specific database session for every user
session. So that multiple users can connect to multiple databases
dynamically. Can I use connection pooling for the same?

Thanks
Nitin.
--
Posted via http://www.ruby-forum.com/.

Reply all
Reply to author
Forward
0 new messages