मैं निम्नलिखित के रूप में मेरे रेल अनुप्रयोग के सेटअप:रेल पैदा करता है: कुछ समय समाप्ति के बाद "PGError सर्वर कनेक्शन अप्रत्याशित रूप से बंद"
- रेल: 3.0.5 (अपाचे प्रॉक्सी के तहत) RHEL पर चल 5.6
- पोस्टग्रेज़: 8.4, विंडोज सर्वर 2008 पर चल रहा है 2 सर्वर एक ही लैन पर हैं।
समस्या है, कुछ निष्क्रिय समय के बाद, जब मैं रेल अनुप्रयोग के लिए एक नया अनुरोध कर, यह मेरे निम्न त्रुटि देता है:
ActiveRecord::StatementInvalid (PGError: server closed the connection unexpectedly
This probably means the server terminated abnormally
before or while processing the request.
मैं क्या शोध किया है से, ऐसा लगता है कि Postgres द्वारा कुछ समय समाप्ति के बाद डेटाबेस कनेक्शन गिराए गए हैं। इस समय के दौरान, रेल की ओर,
- से अगर मैं रेल के लिए एक अनुरोध (1 अनुरोध), यह ऊपर
- के रूप में कनेक्शन त्रुटि प्रदर्शित करेगा अगर मैं रेल के लिए एक और अनुरोध (2 अनुरोध) बनाने बनाने के लिए, रेल पोस्टग्रेज़ से फिर से जुड़ने लगते हैं और सही तरीके से काम करते हैं।
इसका मतलब है कि मुझे हमेशा पहली कनेक्शन त्रुटि का अनुभव होगा, फिर मेरे पास सामान्य ऑपरेशन होगा, जो मेरे मामले में बहुत गंभीर है क्योंकि मैं अपने क्लाइंट को एक गैर-त्रुटि प्रतिक्रिया देना चाहता हूं।
मैं सवाल और जवाब निम्नलिखित में देखा है, लेकिन वे मेरे मामले के लिए उपयुक्त होने के लिए नहीं है:
- "PGError: no connection to the server" after idle (उबंटू डीबी सर्वर के लिए)
- How to use tcp_keepalives settings in Postgresql? (MacOS में keepalives)
क्या आपके एप को डीबी कनेक्शन त्रुटियों से मुक्त करने के लिए कोई सलाह है? धन्यवाद।
मुझे heroku – Salil
के साथ postgresql का उपयोग करते समय एक ही त्रुटि मिल रही है कनेक्शन के लिए जाना सामान्य है। रेलों के लिए यह बहुत ही अनुचित तरीके से इलाज करना सामान्य नहीं है। 'सत्यापित करें' और 'सक्रिय? 'के अपने डेटाबेस ड्राइवर (एडाप्टर) के कार्यान्वयन की जांच करें; आम तौर पर 'ActiveRecord :: कनेक्शनएडाप्टर :: कनेक्शनपूल' एडाप्टर को पूल से बाहर निकलने से पहले किसी भी पुराने कनेक्शन को फिर से कनेक्ट करने का मौका देता है। पोस्टग्रेस के लिए आप किस मणि का उपयोग कर रहे हैं? – vladr