簡體   English   中英

軌道連接池5

[英]Connection Pool for rails 5

我有rails 5 rc1的這個問題。 有沒有人知道如何在環境文件中配置它以及rails 5活動記錄的默認連接池大小是什么。

   Puma caught this error: could not obtain a connection from the pool within 5.000 seconds (waited 5.000 seconds); all pooled connections were in use (ActiveRecord::ConnectionTimeoutError)
    /home/bsethi/.rvm/gems/ruby-2.2.2/gems/activerecord-5.0.0.rc1/lib/active_record/connection_adapters/abstract/connection_pool.rb:202:in `block in wait_poll'
    /home/bsethi/.rvm/gems/ruby-2.2.2/gems/activerecord-5.0.0.rc1/lib/active_record/connection_adapters/abstract/connection_pool.rb:193:in `loop'
    /home/bsethi/.rvm/gems/ruby-2.2.2/gems/activerecord-5.0.0.rc1/lib/active_record/connection_adapters/abstract/connection_pool.rb:193:in `wait_poll'
    /home/bsethi/.rvm/gems/ruby-2.2.2/gems/activerecord-5.0.0.rc1/lib/active_record/connection_adapters/abstract/connection_pool.rb:154:in `internal_poll'
    /home/bsethi/.rvm/gems/ruby-2.2.2/gems/activerecord-5.0.0.rc1/lib/active_record/connection_adapters/abstract/connection_pool.rb:278:in `internal_poll'
    /home/bsethi/.rvm/gems/ruby-2.2.2/gems/activerecord-5.0.0.rc1/lib/active_record/connection_adapters/abstract/connection_pool.rb:148:in `block in poll'

在所有rails版本中,我使用了config / database.yml中配置的連接池

development:
  adapter: sqlite3
  database: db/development.sqlite3
  pool: 5
  timeout: 5000

所以只需增加它:

development:
  adapter: sqlite3
  database: db/development.sqlite3
  pool: 10
  timeout: 5000

如果有幫助,請告訴我。

UPDATE

將您的值放在環境/ * .rb文件中似乎並不那么簡單。 最接近IMHO的方式是使用ENV變量,因為@Alessandro Caetano建議。

社區有這樣的行動的寶石: rais-dotenv

您可以為每個環境創建.env.*文件,然后dotenv將相應地加載它。

這是一個例子:

# .env.development
main_db_database=main_db_development
main_db_pool=5
main_db_host=localhost
main_db_port=3306
main_db_user=user
main_db_password=password

然后在你的database.tml中

development: &main_db
  adapter: mysql2
  encoding: utf8
  reconnect: true
  database: <%= ENV['main_db_database'] %>
  pool: <%= ENV['main_db_pool'] ? ENV['main_db_pool'].to_i : 5 %>
  host: <%= ENV['main_db_host'] %>
  port: <%= ENV['main_db_port'] %>
  username: <%= ENV['main_db_username'] %>
  password: <%= ENV['main_db_password'] %>

您可以在config / database.yml中設置連接池限制,如下所示:

production:
   url:  <%= ENV["DATABASE_URL"] %>
   pool: <%= ENV["DB_POOL"] || ENV['RAILS_MAX_THREADS'] || 5 %>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM