के बाद कनेक्शन समय बाहर आ गया है हमारे पास एक एपीआई है जो ओआरएम उपकरण के रूप में हाइबरनेट का उपयोग करता है और हम कनेक्शन पूल हैंडलर के रूप में c3p0 का उपयोग करते हैं। जब हम लोड में हैं तो हमें कोई समस्या नहीं है। हालांकि, जब हम एपीआई एक दिन या उससे भी ज्यादा निष्क्रिय होते हैं तो हम "कनेक्शन प्राप्त करने में असमर्थ" अपवादों में भाग ले रहे हैं। इसलिए, अगर कोई शरीर सप्ताहांत में एपीआई का उपयोग नहीं करता है, तो हमें सोमवार सुबह कनेक्शन त्रुटियां मिलती हैं।निष्क्रियता अवधि
Caused by: java.sql.SQLException: An attempt by a client to checkout a Connection has timed out.
हम डेटाबेस के रूप में mysql का उपयोग करते हैं। मेरे शोध पर, मुझे पता चला कि MySQL 8 घंटे या उससे भी बाद के कनेक्शन कनेक्शन बनाता है। यह संभव हो सकता है कि कनेक्शन पूल क्लाइंट के लिए एक पुराना कनेक्शन दे रहा है और इसलिए क्लाइंट के लिए कनेक्शन टाइमआउट अपवाद।
वर्तमान में, हमारे पास C3Po में कॉन्फ़िगर कोई कनेक्शन परीक्षण नहीं है। आइए कहें, अगर मैं क्लाइंट को पूल द्वारा दिए जाने से पहले कनेक्शन का परीक्षण करने के लिए IdleTestPeriod का उपयोग करता हूं। तो क्या होता है यदि मेरे सभी कनेक्शन एक समय पर परीक्षण में असफल हो जाते हैं? क्या उन असफल कनेक्शन पूल से हटा दिए जाएंगे और नए सक्रिय कनेक्शन फिर से उत्पन्न किए जाएंगे?
वर्तमान में, यह c3p0 सेटिंग्स है जिसका हम उपयोग कर रहे हैं। इस समस्या के लिए कोई अन्य कारण संभव है?
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="driverClass" value="${----}"/>
<property name="jdbcUrl" value="${----}"/>
<property name="user" value="${----}"/>
<property name="password" value="${------}"/>
<property name="minPoolSize" value="5"/>
<property name="acquireIncrement" value="5" />
<property name="maxPoolSize" value="125" />
<property name="maxStatements" value="10" />
<property name="maxIdleTime" value="180" />
<property name="maxIdleTimeExcessConnections" value="30" />
<property name="checkoutTimeout" value="3000" />
<property name="preferredTestQuery" value="SELECT 1" />
</bean>
मदद