2015-06-25 17 views
16

के लिए कोई कनेक्शन पूल नहीं है, मैं वांछित के रूप में उसके साइनोक कार्यों पर होस्ट किया गया मेरा साइनरा/रूबी ऐप नहीं बना सकता। मैं इस मुद्दे को हल करने की कोशिश कर रहे कुछ सेटअप के साथ झुका हुआ लेकिन अब तक कोई परिणाम नहीं है।ActiveRecord :: कनेक्शन नॉट स्थापित - एक्स

ActiveRecord::ConnectionNotEstablished - No connection pool for User: 
2015-06-25T14:26:11.736854+00:00 app[web.1]: /app/vendor/bundle/ruby/2.0.0/gems/activerecord-4.2.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:566:in `retrieve_connection' 
2015-06-25T14:26:11.736856+00:00 app[web.1]: /app/vendor/bundle/ruby/2.0.0/gems/activerecord-4.2.1/lib/active_record/connection_handling.rb:113:in `retrieve_connection' 
2015-06-25T14:26:11.736858+00:00 app[web.1]: /app/vendor/bundle/ruby/2.0.0/gems/activerecord-4.2.1/lib/active_record/connection_handling.rb:87:in `connection' 

उपयोगकर्ता मेरी ActiveRecords तालिका में से एक है और एप्लिकेशन को विफल रहता है क्योंकि मैं इसे क्वेरी करने के लिए प्रयास करें।

मैं प्यूमा बैकअप के साथ सिनात्रा का उपयोग करता हूं।

web: ruby app/my-server.rb -s puma 

मैं भी कितने खुले कनेक्शनों वहाँ उपयोग कर रहा है की जाँच की गई थी: यहाँ मेरी Procfile है

select count(*) from pg_stat_activity where pid <> pg_backend_pid() and usename = current_user; 

लेकिन इसके कहते हैं 0 हर बार।

मैं ऐप को मुफ्त योजना और Herokupostgres की देव योजना पर होस्ट कर रहा हूं।

मैंने यह भी देखा कि समस्या तब होती है जब समय के कम अंतराल पर एपीआई के लिए 2 त्वरित कॉल होते हैं। जैसे वहां केवल 1 था, 5 कनेक्शन उपलब्ध नहीं थे, क्योंकि पहला कॉल सफल होता है और दूसरा विफल रहता है।

default: &default 
    adapter: postgresql 
    encoding: utf8 
    pool: 5 
    timeout: 5000 

production: 
    <<: *default 
    host: my_db_address 
    port: 5432 
    database: my_db_name 
    username: my_db_user_name 
    password: my_db_password 

< test and development ommited > 

मैं कुछ विन्यास को याद करते हैं: 5 पर

मैं ऑन रेल्स 4.2.1 और Postgres 9.4

यहाँ हूँ मेरी मैं सेटअप पूल database.yml मेरे database.yml रूप में अच्छी तरह है या उस पर मुफ्त Heroku योजना चोक करता है?

+0

आप अपने database.yml फ़ाइल को पोस्ट कर सकते हैं? – Tommyixi

+1

आपने इसे रूबी-ऑन-रेल के साथ टैग किया है लेकिन मुझे प्रश्न में रेल का कोई उल्लेख नहीं दिख रहा है, क्या आप इसका उपयोग कर रहे हैं? यदि नहीं, तो आपको लगता है कि डेटाबेस.इम्ल भी पढ़ा जा रहा है? "रेल 4.1 के लिए आप इन मानों को सीधे अपने कॉन्फ़िगर/डेटाबेस.इमएल में सेट कर सकते हैं" https://devcenter.heroku.com/articles/concurrency-and-database-connections#threaded-servers जुड़े प्यूमा आलेख पर एक नज़र डालें और [on_worker_boot] में पूल सेट करने का प्रयास करें (https://devcenter.heroku.com/articles/deploying-rails-plplications-with-the-puma-web-server#on-worker-boot) – iain

+0

मैं चालू हूं रेल 4.2.1 और पोस्टग्रेस 9.4 –

उत्तर

4

कृपया जांच करें कि कैसे अपनी सिनात्रा एप्लिकेशन कनेक्शन

configure :production, :development do 
    db = URI.parse(ENV['DATABASE_URL'] || 'postgres://localhost/mydb') 
    pool = ENV["DB_POOL"] || ENV['MAX_THREADS'] || 5 
    ActiveRecord::Base.establish_connection(
     adapter: db.scheme == 'postgres' ? 'postgresql' : db.scheme, 
     host:  db.host, 
     username: db.user, 
     password: db.password, 
     database: db.path[1..-1], 
     encoding: 'utf8', 
     pool:  pool 
) 
end 

सुनिश्चित करें कि आप पूल के लिए उचित सेटिंग है, यह भी सुनिश्चित करें कि आप DB_POOL या MAX_THREADS के लिए एक Heroku config कर बनाने की स्थापना की।

heroku config:set DB_POOL=5 

या

heroku config:set MAX_THREADS=5 
संबंधित मुद्दे