हरोकू “psql: FATAL: शेष कनेक्शन स्लॉट गैर-प्रतिकृति सुपरयुसर कनेक्शन के लिए आरक्षित हैं”


120

मैं एक Postgresql बैकएंड के साथ हरोकू पर एक ऐप विकसित कर रहा हूं। समय-समय पर, मुझे यह त्रुटि संदेश मिलता है जब डेटाबेस तक पहुंचने की कोशिश करते हैं, दोनों सीएलआई से और सर्वर पर एक पेज लोड करने से:

psql: FATAL: remaining connection slots are reserved for non-replication superuser connections

पहले किसी ने भी इसे देखा या कृपया मुझे सही दिशा में इंगित करने में मदद करें?


1
एक ही समस्या होने। मैंने कहीं पढ़ा कि कुछ सर्वरों पर हरोकू समर्थन ने "कुछ मुद्दों का पता लगाया था", और उन्होंने प्रश्न में उपयोगकर्ता को एक नया बेसिक डेटाबेस का प्रावधान करने और pgbackups का उपयोग करके इसे स्थानांतरित करने की सिफारिश की। मेरी समस्या अब यह है कि ऐप इतना नया है कि मैंने अभी तक बैकअप नहीं बनाया है, और मुझे वही त्रुटि मिलती है जो एक कोर्स बनाने की कोशिश कर रहा है: D
André Laszlo

रिकॉर्ड के लिए, मैं heroku pgbackupsइस त्रुटि के बावजूद बैकअप बनाने के लिए कमांड का उपयोग करने में सक्षम था ।
मार्कशीट

इस समस्या को पुन: उत्पन्न करने के लिए आप बड़ी मात्रा में टर्मिनल बना सकते हैं। .batइसके लिए विंडोज में स्क्रिप्ट: for /l %%x in (1, 1, 100) do ( start psql )जहां 100 वांछितों की संख्या वांछित है।
koxt

मुझे भी यही समस्या थी। मैं उपयोग कर एक नया डेटाबेस के लिए डेटा स्थानांतरित करने में सक्षम नहीं था pg:backups copy, pg:backups capture, से यह से कनेक्ट करके pgAdminअपने खुद के कंप्यूटर, या किसी अन्य तरह से मैं कल्पना कर सकता पर। यहां तक pg:killallकि मदद भी नहीं की। एक घंटे बाद, मैंने फिर से कोशिश की और कनेक्शन 50-50 थे, इसलिए कुछ प्रयासों के बाद मुझे एक सफलता मिली pg:backups copyऔर मेरा ऐप वापस हवा में आ गया। यह ... एक मजेदार दिन नहीं था। यदि आप इसे गुगली करते हैं, तो एक कप पानी पिएं।
और सराफ

1
मैं अब यह फिर से कर रहा हूँ। मेरे पिछले अनुभव का दस्तावेजीकरण कितना भाग्यशाली रहा ... संपादित करें: इस बार पुनः आरंभ करना पर्याप्त था।
और सराफ

जवाबों:


56

आपको या तो max_connectionsकॉन्फ़िगरेशन सेटिंग को बढ़ाने की आवश्यकता है या (शायद बेहतर) कनेक्शन पूलिंग का उपयोग करने के लिए छोटे कनेक्शन पूल के माध्यम से बड़ी संख्या में उपयोगकर्ता अनुरोधों को रूट करें।

https://wiki.postgresql.org/wiki/Number_Of_Database_Connections


14
यह भी एक आम समस्या है कि क्लाइंट साइड ऐप क्रैश होने और कनेक्शन को खुला छोड़ने और फिर से चालू होने पर नए खुलने जैसा है। अगर इस तरह की बात होती है तो आप कनेक्शन से बाहर निकल जाएंगे। या ऐप बस अनुचित तरीके से कॉन्फ़िगर किया गया है और बहुत सारे कनेक्शन खोलता है।
स्कॉट मारलो

5
मुझे नहीं लगता कि मैं हरोकू पर कॉन्फ़िगरेशन सेटिंग्स बदल सकता हूं। क्या सभी खुले कनेक्शनों को बंद करने का कोई तरीका है?
nathancahill

1
उम्मीद है कि सर्वर काफी आक्रामक आधार पर रखने के पैकेट के लिए कॉन्फ़िगर किया गया है। इससे सत्र उचित समय में समाप्त हो जाएंगे यदि कनेक्शन अचानक टूट गए हैं। यदि यह कॉन्फ़िगर नहीं किया गया है, यदि आप डेटाबेस सुपरयुजर के रूप में लॉग इन कर सकते हैं, तो आप pidसत्रों के मानों को पहचान सकते हैं और pg_terminate_backend()उन्हें मारने के लिए फ़ंक्शन का उपयोग कर सकते हैं। समस्या से बचने के लिए, ग्राहक की ओर से अचानक हत्या करने के बजाय कनेक्शन को ठीक से बंद करना सुनिश्चित करें।
kgrittn

@nathancahill डेटाबेस के लिए सभी कनेक्शनों बर्खास्त:heroku pg:killall
रोको

9

यह अपवाद तब हुआ जब मैं कनेक्शन बंद करना भूल गया


7

देखें Heroku "psql: घातक: शेष कनेक्शन स्लॉट्स गैरप्रतिकृति सुपर उपयोगकर्ता कनेक्शन के लिए आरक्षित हैं" :

हेरोकू को कभी-कभी डेटाबेस लोड संतुलन में समस्या होती है।

André Laszlo, markshizऔर मुझे सभी ने इस सवाल पर टिप्पणियों में उस से निपटने की सूचना दी।

आपको समर्थन कॉल सहेजने के लिए, यहां एक ही मुद्दे के लिए हरोकू समर्थन से मुझे मिली प्रतिक्रिया है:

हैलो,

हॉबी टियर डेटाबेस की सीमाओं में से एक अघोषित रखरखाव है। कई हॉबी डेटाबेस एक ही साझा किए गए सर्वर पर चलते हैं, और हमें कभी-कभी हार्डवेयर रखरखाव उद्देश्यों के लिए उस सर्वर को पुनरारंभ करने की आवश्यकता होगी, या लोड संतुलन के लिए डेटाबेस को किसी अन्य सर्वर पर माइग्रेट करना होगा। जब ऐसा होता है, तो आपको अपने लॉग में कोई त्रुटि दिखाई देगी या आपको कनेक्ट करने में समस्या होगी। यदि सर्वर पुनरारंभ हो रहा है, तो डेटाबेस को ऑनलाइन वापस आने में 15 मिनट या उससे अधिक समय लग सकता है।

अधिकांश ऐप जो एक कनेक्शन पूल बनाए रखते हैं (जैसे ActiveRecord in Rails) डेटाबेस के लिए एक नया कनेक्शन खोल सकते हैं। हालाँकि, कुछ मामलों में एक ऐप पुन: कनेक्ट करने में सक्षम नहीं होगा। यदि ऐसा होता है, तो आप उसे ऑनलाइन वापस लाने के लिए अपने ऐप को फिर से शुरू कर सकते हैं।

यह एक कारण है जो हम महत्वपूर्ण उत्पादन अनुप्रयोगों के लिए हॉबी डेटाबेस चलाने के खिलाफ सुझाते हैं। मानक और प्रीमियम डेटाबेस में डाउनटाइम घटनाओं के लिए सूचनाएं शामिल हैं, और सामान्य रूप से बहुत अधिक प्रदर्शन और स्थिर हैं। आप एक मानक या प्रीमियम योजना में माइग्रेट करने के लिए pg: copy का उपयोग कर सकते हैं।

यदि यह जारी रहता है, तो आप एक नए डेटाबेस (एक अलग सर्वर पर) को हेरोकू ऐडऑन: ऐड के साथ जोड़ने का प्रयास कर सकते हैं, फिर डेटा को स्थानांतरित करने के लिए pg: copy का उपयोग करें। ध्यान रखें कि हॉबी टियर के नियम $ 9 मूल योजना के साथ-साथ मुफ्त डेटाबेस पर भी लागू होते हैं।

धन्यवाद, ब्रैडली


1
मुझे आश्चर्य है कि जब आप $ 50 / महीने के डेटाबेस प्लान पर होते हैं तो डिब्बाबंद प्रतिक्रिया क्या होती है?
मपिसॉट 17

1
केवल हॉबी टियर साझा डेटाबेस सर्वर का उपयोग करते हैं। $ 50 / महीने की योजना के साथ आपके पास अपना सर्वर है, इसलिए यदि आप इस समस्या में चल रहे हैं, तो यह आपका अपना ऐप है। आपके पास $ 50 / महीने की योजना के साथ अधिक प्रशासनिक विकल्प हैं, इसलिए निदान करना और ठीक करना आसान है।
जेस्मिन स्मिथ

क्या आप बता सकते हैं कि मानक विकल्प के साथ आपके पास क्या प्रशासनिक विकल्प हैं? साथ ही यह संदेश केवल 200 कनेक्शन के साथ मिल रहा है।
पेंसिलकेच

6

मैं वास्तव में django अंत का उपयोग कर कनेक्शन पूलिंग को लागू करने की कोशिश की:

https://github.com/gmcguire/django-db-pool

लेकिन मुझे अभी भी यह त्रुटि प्राप्त हुई, 20 खुले कनेक्शनों के मानक विकास DB कोटा के नीचे उपलब्ध कनेक्शनों की संख्या कम करने के बावजूद।

अमेज़न आरडीएस के मुक्त / सस्ते टियर के लिए अपने पोस्टग्रैक्स्ल डेटाबेस को स्थानांतरित करने के तरीके के बारे में यहां एक लेख है। यह आपको max_connectionsउच्चतर सेट करने की अनुमति देगा । यह आपको PGBouncer का उपयोग करके डेटाबेस स्तर पर कनेक्शन को पूल करने की भी अनुमति देगा।

https://www.lewagon.com/blog/how-to-migrate-heroku-postgres-database-to-amazon-rds

अपडेट करें:

हेरोकू ने मेरे खुले टिकट का जवाब दिया और कहा कि मेरा डेटाबेस अनुचित तरीके से उनके नेटवर्क में संतुलित है। उन्होंने कहा कि उनकी प्रणाली में सुधार भविष्य में इसी तरह की समस्याओं को रोकना चाहिए। फिर भी, मेरे डेटाबेस को मैन्युअल रूप से स्थानांतरित करने के लिए समर्थन और प्रदर्शन में उल्लेखनीय सुधार हुआ है।


मुझे लगता है कि डेटाबेस को स्थानांतरित करना इस पर पूर्ण नियंत्रण रखने का सबसे अच्छा समाधान है। उस लेख के लिए धन्यवाद।
नथानक्हिल

-3

कमांड का पालन करके अपने पोस्टग्रेज डेटाबेस को फिर से शुरू करें:

postgres -D /usr/local/var/postgres

Postgres DB Heroku द्वारा होस्ट की गई सेवा है, इसलिए यह काम नहीं करेगा।
27
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.