What units is timeout in Rails database.yml?

In database.yml, is the timeout in seconds or milliseconds? And what specifically is it, the timeout for the entire database connection including wait time for a connection or something else?


the timeout is in milliseconds. This is the entire time which rails app wait for database response. Good practice is to add reconnect option in this file then the application will try reconnecting to the server before giving up in case of a lost connection.

Disaster strikes when you do not configure timeout values properly. In Rails, database configurations are set in the config/database.yml file. to libmysqlclient as MYSQL_OPT_CONNECT_TIMEOUT, 120 seconds Source. In Rails, database configurations are set in the config/database.yml file. These options are either native to the ActiveRecord::ConnectionPool module, or passed to the underlying adapter, depending on whether MySQL or PostgreSQL is used. ActiveRecord uses connection adapters to make database calls.


Number of seconds to block and wait for a connection before giving up and raising a timeout error (default 5 seconds).

wait_timeout: 900 # 15 minutes.
timeout: 5000 # 5 seconds.

MYSQL Docs say :

 1. wait_timeout : The number of seconds the server waits for activity on a
   noninteractive connection before closing it. The default value is 28800.

 2. connect_timeout : The number of seconds that the mysqld server waits for
   a connect packet before responding with Bad handshake. The default value is 10 seconds.

connect_timeout mysql is mapped to timeout defined in data_base.yml rails which is set to 5 seconds default.

It can tie up your entire system if not handled properly. All network requests should have a timeout. Here's how to add timeouts for popular Ruby gems. All have  The database.yml can contain ERB (ruby logic) so you could do something like pass a command line flag or set an environment variable for that process type, then do an if on the timeout config. – Bill Lipa Feb 28 at 22:12


If you use checkout_timeout, the unit is in seconds.

When it cannot get a connection, a timeout error will be thrown. It may look could not obtain a database connection within 5 seconds. The max pool For Rails 4.1+ you can set these values directly in your config/database.yml production:  Database.yml is one of the most important files in rails project, database.yml rails is actualy a configuration file. What is Contains? Database.yml is configuration file which tells rails about database, database information such as Paramter Description host URL of the Host Machine where database is installed. If over a network then


A file used by rack servers to start the application. db Gemfile Files related to the an application. test Directory containing test unit tests for your application. tmp of what Rails expects as far as databases go, open the config/database.yml file pool: 5 timeout: 5000 # Warning: The database defined as "est" will be erased​  Afters this it creates a database.yml file in the folder shared/config. On every cap deploy the gem creates a symlink to the shared database.yml under current/config . So your rails application has always a database.yml file that is always the same between all deployments.


You'll quickly get used to the Rails' directory structure, because all Rails config Configuration files for all components of your application. db Files related to the JavaScript, and CSS files. script The always-important rails script. test Unit, adapter: sqlite3 database: db/development.sqlite3 pool: 5 timeout: 5000 test:  Also for security reasons (if you're using version control) you should not store your database password in database.yml. Instead, do what user3118220 did and get it from your environment: password: ENV['MY_RAILS_APP_DB_PASSWORD']. – Feliks Montez May 29 '17 at 21:19


could not obtain a connection from the pool within 5.000 seconds (waited pooled connections were in use (ActiveRecord::ConnectionTimeoutError) count the number of threads per Puma worker to populate database.yml Sample config/database.yml from Rails. Postgres, MySQL, and SQLite - mysql.database.yml