6

मेरे पास हाइबरनेट का उपयोग करके भारी लोड जावा एप्लिकेशन है। और मैं कनेक्शन पूल डीबीसीपी के रूप में उपयोग करता था, लेकिन कनेक्शन हानि के साथ समस्याएं थीं। मैं c3p0 पर स्विच किया था। लेकिन अब यह कभी-कभी धागे को धुंधला करता है और मुझे नहीं पता कि क्यों। यहाँ की तरह:डेटाबेस कनेक्शन पूलिंग लाइब्रेरी के लिए सबसे अच्छा विकल्प क्या है? (c3p0 समस्या)

"[email protected]" prio=10 tid=0x00007fa6b0940000 nid=0x4e12 runnable [0x00007fa6f8f1c000] 
    java.lang.Thread.State: RUNNABLE 
    at com.mchange.v2.resourcepool.BasicResourcePool.doCheckinManaged(BasicResourcePool.java:1258) 
    at com.mchange.v2.resourcepool.BasicResourcePool.checkinResource(BasicResourcePool.java:647) 
    - locked <0x00007fa7286d9728> (a com.mchange.v2.resourcepool.BasicResourcePool) 
    at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$ConnectionEventListenerImpl.doCheckinResource(C3P0PooledConnectionPool.java:636) 
    at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$ConnectionEventListenerImpl.connectionClosed(C3P0PooledConnectionPool.java:630) 
    at com.mchange.v2.c3p0.util.ConnectionEventSupport.fireConnectionClosed(ConnectionEventSupport.java:55) 
    at com.mchange.v2.c3p0.impl.NewPooledConnection.fireConnectionClosed(NewPooledConnection.java:510) 
    at com.mchange.v2.c3p0.impl.NewPooledConnection.markClosedProxyConnection(NewPooledConnection.java:381) 
    at com.mchange.v2.c3p0.impl.NewProxyConnection.close(NewProxyConnection.java:1246) 
    - locked <0x00007fa794ccf020> (a com.mchange.v2.c3p0.impl.NewProxyConnection) 
    at org.springframework.orm.hibernate3.LocalDataSourceConnectionProvider.closeConnection(LocalDataSourceConnectionProvider.java:96) 
    at org.hibernate.jdbc.ConnectionManager.closeConnection(ConnectionManager.java:474) 
    at org.hibernate.jdbc.ConnectionManager.cleanup(ConnectionManager.java:408) 
    at org.hibernate.jdbc.ConnectionManager.close(ConnectionManager.java:347) 
    at org.hibernate.impl.SessionImpl.close(SessionImpl.java:325) 
    at org.springframework.orm.hibernate3.SessionFactoryUtils.closeSession(SessionFactoryUtils.java:791) 
    at org.springframework.orm.hibernate3.SessionFactoryUtils.closeSessionOrRegisterDeferredClose(SessionFactoryUtils.java:777) 
    at org.springframework.orm.hibernate3.SessionFactoryUtils.releaseSession(SessionFactoryUtils.java:755) 

' मेरे स्टैकट्रेस डंप पता चला है कि इस सूत्र, ताला < 0x00007fa7286d9728> साथ अवरुद्ध मेरे सारे अन्य थ्रेड, इसलिए में थोड़ी देर के सर्वर को पूरी तरह से ब्लॉक किया गया था। मुझे यकीन नहीं है कि यह धागा कितना समय चलता है, अगर एक धागा लंबे समय तक अन्य सभी धागे को अवरुद्ध कर रहा था, या अगर इस धागे से खपत का समय बहुत लंबा था, लेकिन नतीजा यह था कि मेरा सिस्टम पूरी तरह अवरुद्ध हो गया था और अत्यधिक धीमा हो गया था। मैंने बहुत गुस्सा किया, लेकिन मुझे नहीं पता कि इस समस्या को कैसे हल किया जाए। मुझे कनेक्शन बंद करने और जितनी जल्दी हो सके ट्रेड खत्म करने के लिए पूल की जरूरत है। क्या मुझे कुछ अन्य कनेक्शन पूल का उपयोग करना चाहिए? मेरे लिए यह पूरी तरह से जरूरी है कि यह पूल लाइब्रेरी 100% बचाएं, कोई डेडलॉक्स, लाइफलॉक्स, स्टारवेशन, यहां तक ​​कि यह अन्य पुस्तकालयों की तुलना में थोड़ा धीमा है। किसी भी मदद

+0

पुराने धागे को बंप करने के लिए खेद है, लेकिन कुछ समय पहले मैंने इस विषय पर कुछ छोटा सा शोध किया था: http://stackoverflow.com/questions/5640146/java-jdbc-connection-pool-library-choice-in- 2011 –

उत्तर

1

1) क्या आप मतलब है जब के लिए

धन्यवाद DBCP में खोने संबंध के बारे में कहा? क्या आप MySQL का उपयोग करते हैं? मुझे कुछ समय के दौरान कोई गतिविधि नहीं होने पर MySQL के साथ काम करने के साथ कनेक्शन खोने में समस्या पता है। क्या यह आपका मामला है?

2) उच्च लोड किए गए ऐप में हाइबरनेट का उपयोग करना बहुत अच्छा विकल्प नहीं है। हाइबरनेट बहुत जटिल है और विशेष रूप से जटिल डेटा और रिश्तों पर धीमा है (उदाहरण के लिए इसे प्रत्येक सत्र पर लेनदेन की आवश्यकता होती है, भले ही हम डेटा पुनर्प्राप्त करना चाहते हैं)

3) कारण हो सकता है कि पूल में पर्याप्त थ्रेड नहीं हैं और पर्याप्त धागे नहीं हैं ?

मैंने उच्च लोड परियोजना में भाग लिया। हम सॉफ्ट डेटा के लिए हाइबरनेट का उपयोग करते हैं (भारी संख्या में अनुरोधों के बहुत सारे अनुरोध जिनमें बहुत जटिल मैपिंग नहीं थी) और भारी डेटा के लिए जेडीबीसी पर स्वयं लिखित रैपर (हार्ड मैनुअल मैपिंग के साथ एसपी के माध्यम से हजारों रिकॉर्ड के बहुत सारे अनुरोध नहीं)। और लंबे समय तक निष्क्रियता के बाद MySQL डेटाबेस से कनेक्शन खोने के अलावा हमें डीबीसीपी के साथ कोई समस्या नहीं थी।

3

आप बोनेसीपी - http://jolbox.com पर एक नज़र डालना चाहते हैं।

सी 3 पी 0/डीबीसीपी की तुलना में काफी बेहतर प्रदर्शन और अब तक किसी भी डेडलॉक्स की कोई रिपोर्ट नहीं है।

+0

बोनेसीपी को अब और अधिक विकास नहीं मिल रहा है और इसके साथ हमें समस्याएं हैं जिनसे इसे और अधिक कनेक्शन बनाना चाहिए। हम सी 3 पी 0 पर वापस जाने के बारे में सोच रहे हैं क्योंकि डेवलपर ने इस पर काम करना शुरू कर दिया है। – leebutts

+0

बोनसीपी विकास को पुनरारंभ किया गया है। – wwadge

+0

सुनना अच्छा है, इस बीच हमने टॉमकैट पूल का उपयोग करना शुरू कर दिया है और ऐसा लगता है कि अब तक यह एक अच्छा काम कर रहा है। – leebutts