2016-09-22 12 views
9

मेरे पास एक मूले एप्लिकेशन है जो ओरेकल डेटाबेस से जुड़ता है। एप्लिकेशन एक एसओएपी एपीआई है जो एसक्यूएल संग्रहीत प्रक्रियाओं को निष्पादित करने की अनुमति देता है। मेरा कनेक्टर कनेक्शन पूलिंग का उपयोग करने के लिए स्थापित है और मैं कनेक्शन को स्वयं निगरानी कर रहा हूं। मेरे पास अधिकतम पूल आकार 20 है और डेटाबेस में कॉल करते समय, मैं उन्हें खोल सकता हूं (netstat -ntl | grep PORTNUMBER)।निष्क्रियता के बाद डेटाबेस कनेक्शन बंद करें

tcp4  0  0 IP HERE  OTHER IP HERE  SYN_SENT 
tcp4  0  0 IP HERE  OTHER IP HERE  ESTABLISHED 
tcp4  0  0 IP HERE  OTHER IP HERE  ESTABLISHED 
tcp4  0  0 IP HERE  OTHER IP HERE  ESTABLISHED 
tcp4  0  0 IP HERE  OTHER IP HERE  ESTABLISHED 
tcp4  0  0 IP HERE  OTHER IP HERE  ESTABLISHED 
tcp4  0  0 IP HERE  OTHER IP HERE  ESTABLISHED 
tcp4  0  0 IP HERE  OTHER IP HERE  ESTABLISHED 
tcp4  0  0 IP HERE  OTHER IP HERE  ESTABLISHED 
tcp4  0  0 IP HERE  OTHER IP HERE  ESTABLISHED 
tcp4  0  0 IP HERE  OTHER IP HERE  ESTABLISHED 
tcp4  0  0 IP HERE  OTHER IP HERE  ESTABLISHED 
tcp4  0  0 IP HERE  OTHER IP HERE  ESTABLISHED 
tcp4  0  0 IP HERE  OTHER IP HERE  ESTABLISHED 
tcp4  0  0 IP HERE  OTHER IP HERE  ESTABLISHED 
tcp4  0  0 IP HERE  OTHER IP HERE  ESTABLISHED 
tcp4  0  0 IP HERE  OTHER IP HERE  ESTABLISHED 
tcp4  0  0 IP HERE  OTHER IP HERE  ESTABLISHED 
tcp4  0  0 IP HERE  OTHER IP HERE  ESTABLISHED 
tcp4  0  0 IP HERE  OTHER IP HERE  ESTABLISHED 
tcp4  0  0 IP HERE  OTHER IP HERE  ESTABLISHED 
tcp4  10  0 IP HERE  OTHER IP HERE  ESTABLISHED 

जब कॉल किए जाते हैं, तो मुझे उम्मीद है कि कनेक्शन एक निश्चित अवधि के बाद बंद हो जाएंगे। ऐसा नहीं होता है। मैंने देखा है कि जब सर्वर पर एप्लिकेशन चल रहा था, कनेक्शन अभी भी जुलाई से खुले थे (यह कुछ महीने पहले है)।

एक्सए लेनदेन को सक्षम करने और कनेक्शन टाइमआउट सेट करके कुछ सेकंड के बाद कनेक्शन को वास्तव में बंद करने का एकमात्र तरीका है। हालांकि, यह पूरी तरह से एप्लिकेशन के प्रदर्शन को गड़बड़ कर देता है और यह अनावश्यक ओवरहेड है।

मैं एक्सए कनेक्शन का उपयोग किए बिना ऐसे टाइमआउट को जोड़ने के बारे में कैसे जाऊं? मैं अपने डेटाबेस कनेक्शन को 20 सेकंड निष्क्रियता के बाद बंद करना चाहता हूं।

धन्यवाद

संपादित करें: जेनेरिक डेटाबेस कनेक्टर प्रयोग किया जाता है - खच्चर संस्करण 3.8.0 हम कनेक्शन डेटाबेस के लिए अनुमति दी जाती है की अधिकतम संख्या है, तो हम इस प्रवाह चल रहा है के कई उदाहरण है। इसका मतलब है कि कनेक्शन उन मामलों में से एक द्वारा आरक्षित हैं जो अन्य उदाहरणों को नए कनेक्शन प्राप्त करने में असमर्थ होते हैं।

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

उत्तर

0

यदि आप मुले के साथ कोई भाग्य नहीं लेंगे तो आप Oracle Transparent Connection Caching का उपयोग करने का प्रयास कर सकते हैं।

कुछ सवालों के मामले बेहतर समझने के लिए:

  1. आप (JDBC/डेटाबेस) और कहा कि खच्चर का कौन सा संस्करण है का उपयोग कर रहे कनेक्टर के प्रकार?
  2. आप बाद में कनेक्शन के बारे में क्यों ख्याल रखते हैं? क्या आप कुछ अन्य लक्षणों को देख रहे हैं जिनसे आप खुश नहीं हैं?
+1

मैंने अपना प्रश्न संपादित कर लिया है। – DenCowboy

0

जेडीबीसी के माध्यम से डेटाबेस कनेक्शन पुन: उपयोग किए जाने के इरादे से खुला रहने के लिए डिज़ाइन किए गए हैं। आम तौर पर, अगली पीढ़ी के नोएसक्यूएल डेटाबेस सहित अधिकांश डेटाबेस प्रौद्योगिकियों में महंगा स्टार्टअप और शट डाउन लागत होती है। एप्लिकेशन कनेक्शन पर डाटाबेस कनेक्शन स्थापित किए जाने चाहिए और एप्लिकेशन शटडाउन पर गहराई से बंद होना चाहिए। प्रत्येक उपयोग के बाद आपको कनेक्शन बंद नहीं करना चाहिए।

ओरेकल UCP नामक एक कनेक्शन पूल प्रदान करता है। यूसीपी stale connections को नियंत्रित करने के विकल्प प्रदान करता है जिसमें अधिकतम विकल्पों का उपयोग करने और अन्य विकल्पों के बीच निष्क्रिय कनेक्शन टाइमआउट सेट करना शामिल है।

यह संसाधनों को संसाधनों को वापस करने के साथ-साथ टूटे हुए कनेक्शन की जांच के लिए उपयोगी हो सकता है। भले ही, कनेक्शन बंद होने से पहले कई बार पुन: उपयोग किया जाना चाहिए।

+0

मुझे पता है कि प्रत्येक उपयोग के बाद कनेक्शन बंद नहीं किया जाना चाहिए, और पूल का उपयोग करके फिर से उपयोग किया जा सकता है। कनेक्शन 2 महीने के लिए खुला होने के बावजूद थोड़ा सा है। एप्लिकेशन स्वयं बंद नहीं होता है। इसे बंद नहीं किया जाना चाहिए, लेकिन जब भी यह किसी निश्चित अवधि के लिए कनेक्शन का उपयोग नहीं करता है, तो मैं इसे बंद करना चाहता हूं। किसी भी तरह, यह एक म्यूएल-विशिष्ट प्रश्न है और मैं जानना चाहता हूं कि इस यूसीपी का उपयोग म्यूले का उपयोग कैसे करें। मैंने बीन्स का उपयोग अपने डेटाबेस कनेक्टर को कॉन्फ़िगर करने के तरीके के रूप में करने का प्रयास किया है, लेकिन मैंने हमेशा डिफ़ॉल्ट माइल कनेक्टर का उपयोग करने के बजाय ऐसा करने में खराब प्रदर्शन किया है। " – DenCowboy

संबंधित मुद्दे