2016-06-24 9 views
8

मुझे रेल 5 आरसी 1 के साथ यह समस्या है। क्या किसी को यह पता है कि इसे पर्यावरण फ़ाइलों में कैसे कॉन्फ़िगर करना है और रेल 5 सक्रिय रिकॉर्ड के लिए डिफ़ॉल्ट कनेक्शन पूल आकार क्या है।रेल के लिए कनेक्शन पूल 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' 
+0

दोनों उत्तर सही हैं लेकिन क्या इसे कॉन्फ़िगरेशन फ़ाइल में रखने का कोई तरीका है? – sethi

+0

मैंने अपना जवाब अपडेट किया। मूल रूप से यह @ एलेसेंड्रो कैटानो के उत्तर की निरंतरता है। – retgoat

उत्तर

8

सभी रेल संस्करणों मैं का इस्तेमाल किया था कनेक्शन पूल 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 

मुझे पता है अगर यह सहायक होगा चलो ।

अद्यतन

ऐसा लगता है यह बहुत/*। Rb फ़ाइलों पर्यावरण के लिए अपने मूल्यों डाल करने के लिए सरल नहीं है। आईएमएचओ एनवीवी वैरिएबल का उपयोग करने का सबसे नज़दीकी तरीका है @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'] %> 
+1

'.to_i' पूल आकार https://github.com/rails/rails/blob/4-2-stable/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb# पर आवश्यक नहीं प्रतीत होता है L243 – typeoneerror

4

आप अपने config/database.yml में कनेक्शन पूल सीमा निर्धारित कर सकते हैं, इस तरह::

यहाँ एक उदाहरण है

production: 
    url: <%= ENV["DATABASE_URL"] %> 
    pool: <%= ENV["DB_POOL"] || ENV['RAILS_MAX_THREADS'] || 5 %> 
संबंधित मुद्दे