Friday, December 13, 2013

ActiveRecord::ConnectionTimeoutError

If one is getting or started getting error like this
ActiveRecord::ConnectionTimeoutError (could not obtain a database connection within 5.000 seconds (waited 5.000 seconds)):
  activerecord (4.0.0.rc1) lib/active_record/connection_adapters/abstract/connection_pool.rb:190:in `block in wait_poll'
  activerecord (4.0.0.rc1) lib/active_record/connection_adapters/abstract/connection_pool.rb:181:in `loop'
  activerecord (4.0.0.rc1) lib/active_record/connection_adapters/abstract/connection_pool.rb:181:in `wait_poll'
  activerecord (4.0.0.rc1) lib/active_record/connection_adapters/abstract/connection_pool.rb:136:in `block in poll'

Then it is something that is missing in your database.yml
{environment_name}:
  adapter: mysql2
  encoding: utf8
  database: {product_name}_environment_name
  username: username
  password: password
  socket: /var/run/mysqld/mysqld.sock

Add correct values for 'reaping_frequency' and 'pool' in connection parameter and it might look like
{environment_name}:
  adapter: mysql2
  encoding: utf8
  database: {product_name}_environment_name
  pool: 15
  reaping_frequency: 3
  username: username
  password: password
  socket: /var/run/mysqld/mysqld.sock
Options descriptions
  • pool: number indicating size of connection pool (default 5)
  • checkout_timeout: number of seconds to block and wait for a connection before giving up and raising a timeout error (default 5 seconds).
  • reaping_frequency: frequency in seconds to periodically run the Reaper, which attempts to find and close dead connections, which can occur if a programmer forgets to close a connection at the end of a thread or a thread dies unexpectedly. (Default nil, which means don't run the Reaper).
  • dead_connection_timeout: number of seconds from last checkout after which the Reaper will consider a connection reapable. (default 5 seconds).

Knowledge base taken from http://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/ConnectionPool.html

No comments:

Post a Comment