Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

Amazon RDS Multi-AZ विफलता को संभालने के लिए GlassFish JDBC कनेक्शन पूल को कॉन्फ़िगर करें

जैसा कि मैंने पहले टिप्पणी की थी, ऐसा इसलिए है क्योंकि खुले और डेटाबेस से जुड़े सॉकेट को पता नहीं है कि कनेक्शन खो गया है, इसलिए वे तब तक जुड़े रहे जब तक ओएस सॉकेट टाइमआउट ट्रिगर नहीं हो जाता, जिसे मैंने पढ़ा है आमतौर पर लगभग 30 मिनट में हो सकता है ।

समस्या को हल करने के लिए आपको सॉकेटटाइमआउट को परिभाषित करने के लिए अपने JDBC कनेक्शन स्ट्रिंग में या JDNI कनेक्शन कॉन्फ़िगरेशन/गुणों में सॉकेट टाइमआउट को ओवरराइड करने की आवश्यकता है। एक छोटे समय के लिए परम।

ध्यान रखें कि परिभाषित मान से अधिक लंबा कोई भी कनेक्शन नष्ट हो जाएगा, भले ही इसका उपयोग किया जा रहा हो (मैं इसकी पुष्टि नहीं कर पाया, जो मैंने पढ़ा है)।

मेरी टिप्पणी में मेरे द्वारा उल्लिखित अन्य दो पैरामीटर हैं connectTimeout और ऑटो रीकनेक्ट

यहाँ मेरी JDBC कनेक्शन स्ट्रिंग है:

jdbc:(...)&connectTimeout=15000&socketTimeout=60000&autoReconnect=true 

मैंने जावा के डीएनएस कैशे को भी अक्षम कर दिया है

 java.security.Security.setProperty("networkaddress.cache.ttl" , "0"); 
 java.security.Security.setProperty("networkaddress.cache.negative.ttl" , "0"); 

मैं ऐसा इसलिए करता हूं क्योंकि जावा टीटीएल का सम्मान नहीं करता है, और जब विफलता होती है, तो डीएनएस वही होता है लेकिन आईपी बदल जाता है।

चूंकि आप एक एप्लिकेशन सर्वर का उपयोग कर रहे हैं, इसलिए DNS कैश को अक्षम करने के पैरामीटर को -Dnet के साथ ग्लासफ़िश शुरू करते समय JVM को पास किया जाना चाहिए, न कि एप्लिकेशन को।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. अज्ञात भाषा के बहुभाषी डेटा को संग्रहीत करने के लिए MySQL संयोजन

  2. वर्कबेंच MySQL क्लाइंट का उपयोग करके डेटाबेस से कैसे कनेक्ट करें

  3. MySQL में क्रमबद्ध डेटा कैसे अपडेट करें

  4. MySQL डेटाबेस की तालिकाओं का आकार कैसे प्राप्त करें?

  5. MySQL में `अहस्ताक्षरित` का क्या अर्थ है और इसका उपयोग कब करना है?