यह आप की तरह लगता है एक कनेक्शन अपने आवेदन में रिसाव क्योंकि यह जमा कनेक्शन बंद करने के लिए विफल रहता है की है। आपको <idle> in transaction
सत्रों के साथ समस्याएं नहीं हैं, लेकिन कुल मिलाकर कई कनेक्शन हैं।
हत्या कोड कनेक्शन के लिए सही जवाब नहीं है, लेकिन यह एक ठीक-ठीक अस्थायी कामकाज है।
PostgreSQL डेटाबेस से अन्य सभी कनेक्शन बूट करने के लिए PostgreSQL को फिर से शुरू करने की बजाय, देखें: How do I detach all other users from a postgres database? और How to drop a PostgreSQL database if there are active connections to it?। उत्तरार्द्ध एक बेहतर सवाल दिखाता है।
टाइमआउट सेट करने के लिए, जैसा कि @Doon ने How to close idle connections in PostgreSQL automatically? देखा है, जो आपको पोस्टग्रेएसक्यूएल के लिए प्रॉक्सी में PgBouncer का उपयोग करने और निष्क्रिय कनेक्शन प्रबंधित करने की सलाह देता है। यह एक बहुत अच्छा विचार है यदि आपके पास एक छोटी गाड़ी एप्लिकेशन है जो किसी भी तरह से कनेक्शन को रिसाव करता है; मैं बहुत दृढ़ता से PgBouncer को कॉन्फ़िगर करने की अनुशंसा करता हूं।
ए TCP keepalive यहां काम नहीं करेगा, क्योंकि ऐप अभी भी जुड़ा हुआ है और जिंदा है, यह सिर्फ नहीं होना चाहिए।
PostgreSQL 9.2 में और ऊपर, आप एक निष्क्रिय कनेक्शन काटनेवाला लागू करने के लिए नई state_change
टाइमस्टैम्प स्तंभ और pg_stat_activity
की status
फ़ील्ड का उपयोग कर सकते हैं।
SELECT pg_terminate_backend(pid)
FROM pg_stat_activity
WHERE datname = 'regress'
AND pid <> pg_backend_pid()
AND state = 'idle'
AND state_change < current_timestamp - INTERVAL '5' MINUTE;
पुराने संस्करणों आप जटिल योजनाओं के जब कनेक्शन निष्क्रिय चला गया ट्रैक रखने लागू करने की आवश्यकता में: एक क्रॉन जॉब कुछ इस तरह चलाने की है। भेजा मत खा; बस pgbouncer का उपयोग करें।
स्रोत
2012-11-06 05:37:49
कैसे सेट कर सकते हैं: आप
SET
आदेश का उपयोग, जैसे यह सेट कर सकते हैं आप डीबी से जुड़ रहे हैं? सॉकेटटाइमआउट आप जो खोज रहे हैं वह हो सकता है। – Doonहमारे पास यह विरासत पिलोन वेब ऐप है, और हमने स्क्लेक्लेमी का उपयोग किया लेकिन स्पष्ट रूप से हमने इसका सही उपयोग नहीं किया। मुझे याद नहीं है। हम रिसाव को ठीक करने की कोशिश कर रहे हैं। दस्तावेज़ से 'सॉकेटटाइमआउट' ऐसा लगता है कि यह पूरी तरह से डीबी से कनेक्शन बंद कर देता है। मैं प्रत्येक निष्क्रिय को बंद करने की कोशिश कर रहा हूं, और जैसे ही कनेक्शन स्थापित हो जाता है, काउंटर शुरू होता है। – user1012451
देखें http://stackoverflow.com/questions/12391174/is-it-possible-to-configure-postgresql-to-automatically-close-idle-connections – Doon