set*_*thi 15 ruby-on-rails ruby-on-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'
Run Code Online (Sandbox Code Playgroud)
ret*_*oat 16
在所有rails版本中,我使用了config/database.yml中配置的连接池
development:
adapter: sqlite3
database: db/development.sqlite3
pool: 5
timeout: 5000
Run Code Online (Sandbox Code Playgroud)
所以只需增加它:
development:
adapter: sqlite3
database: db/development.sqlite3
pool: 10
timeout: 5000
Run Code Online (Sandbox Code Playgroud)
如果有帮助,请告诉我.
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
Run Code Online (Sandbox Code Playgroud)
然后在你的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'] %>
Run Code Online (Sandbox Code Playgroud)
您可以在config/database.yml中设置连接池限制,如下所示:
production:
url: <%= ENV["DATABASE_URL"] %>
pool: <%= ENV["DB_POOL"] || ENV['RAILS_MAX_THREADS'] || 5 %>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10366 次 |
| 最近记录: |