Pivotal Knowledge Base

Follow

How to override the default connection pool size in Ruby on Rails

Environment 

Product Version
Pivotal Cloud Foundry® (PCF) 1.7.x

Purpose

When reviewing database services in the marketplace, choosing a higher plan is preferred in order to allow a larger concurrent connection size. However, it is not enough to increase the concurrent connection size on the database side only. As far as Ruby on Rails is concerned, the connection pool size should also be adjusted to match the connection size on the database side as well. The default connection pool size is 5 in Ruby on Rails. We have to change the default value in order to achieve maximum concurrent connections.

Resolution

For Rails versions 4 or before, connection information would read from ENV["DATABASE_URL"]. Ruby buildpack ignores the contents of any database.yml that you provide and overwrites it during staging. So you have to specify the connection pool size in ENV["DATABASE_URL"]. Here is a sample, which connects a mysql database and the connection pool size is set to 15.

cf set-env <application-name> DATABASE_URL "mysql://username:password@hostname:3306/dbname?reconnect=true&pool=15"
cf restage <application-name> 

For Rails versions 4.1 and later, you have to set connection information in config/database.yml.

For example:

Daivd-Office-Mac:rails4_web_app ubuntu$ more config/database.yml 
development:
  adapter: postgresql
  database: hope-dev

test:
  adapter: postgresql
  database: hope-test

production:
  adapter: mysql2
  database: hope
  user: hope
  password:
  pool: 15

Additional Information

For additional information, refer to this resource:

Configure Service Connections for Ruby

Comments

Powered by Zendesk