c# - MySqlException: The timeout period elapsed prior to obtaining a connection from the pool -
अपवाद जानकारी: अपवाद प्रकार: MySqlException
अपवाद संदेश: त्रुटि जोड़ने: समय समाप्ति की समय सीमा समाप्त हो गई है। पूल से एक कनेक्शन प्राप्त करने के लिए समय समाप्ति अवधि समाप्त हो गई है। ऐसा हो सकता है क्योंकि सभी पूल कनेक्शन उपयोग में थे और अधिकतम पूल आकार तक पहुंचा था।
उपरोक्त त्रुटि यह है कि मैं ईवेंट व्यूअर में मिल रहा हूं यह अपवाद केवल हमारे विकास सर्वर पर होता है यह एक घर के गोदाम प्रबंधन और निजी कंपनी webshop है। हमारे पास एक समय पर 100 से कम उपयोगकर्ता हैं और यह मैं समझता हूं:
- कनेक्शन नहीं किए जा सकते क्योंकि बहुत सारे खुले थ्रेड हैं।
इस समस्या को हल करने की कोशिश करने के लिए मैंने जो कुछ किया है:
- "पूलिंग = ट्रू" सक्षम करें; एप्लिकेशन के कनेक्शन स्ट्रिंग में।
- अधिकतम पूलिंग आकार = 1000; "
- MySQL व्यवस्थापक में 8 घंटे से 2 घंटों तक कनेक्शन धागा निष्क्रिय जीवनकाल कम करें।
- MySQL प्रशासक में अनुमत अधिकतम कनेक्शन बढ़ाएं।
यह अभी भी एक ही मुद्दे का कारण लगता है और मैं वर्तमान में अपने दिमाग के अंत में हूँ इस मुद्दे पर नियंत्रण को नुकसान पहुंचाने के लिए मैं एक या दो घंटे से पुराने थ्रेड्स वाले उपयोगकर्ताओं को मार रहा हूं। मैंने नजर रखी है कि इन दुर्घटनाओं के दौरान अधिकतम 108 कनेक्शन हैं। एक विशेष समय था जब 40 आईडीईई धागे थे, तब कनेक्शन स्वीकार करना बंद कर दिया गया।
नीचे लेनदेन करने के लिए इस्तेमाल किया गया कोड है।
/// & lt; सारांश & gt; /// एक डेटाबेस लेनदेन शुरू करें /// & lt; / सारांश & gt; /// & lt; रिटर्न & gt; डेटाबेस कनेक्शन। & Lt; / रिटर्न & gt; सार्वजनिक डीबी लेनदेन प्रारंभप्रतिबंध () {यदि (_DbConnection.State! = ConnectionState.Open) {_DbConnection.Open (); } वापसी _DbConnection.BeginTransaction (); } /// & lt; सारांश & gt; /// एक डेटाबेस लेनदेन प्रतिबद्ध /// & lt; / सारांश & gt; /// & lt; परम नाम = "लेनदेन" & gt; डेटाबेस कनेक्शन। & Lt; / param & gt; सार्वजनिक शून्य CommitTransaction (DbTransaction लेनदेन) {अगर (लेनदेन! = शून्य) {transaction.Commit (); transaction.Dispose (); } अगर (_DbConnection! = नल) {_DbConnection.Close (); }} /// & lt; सारांश & gt; /// एक डेटाबेस लेनदेन रोलबैक /// & lt; / सारांश & gt; /// & lt; परम नाम = "लेनदेन" & gt; डेटाबेस लेनदेन। & Lt; / param & gt; सार्वजनिक शून्य रोलबैक ट्रांजैक्शन (डीबीटीनसेक्शन लेनदेन) {अगर (लेनदेन! = शून्य) {transaction.Rollback (); }}
उन्हें संशोधित करने के बाद वास्तव में आपके कनेक्शन स्ट्रिंग सहेजने का प्रयास करें।
< / div>
Comments
Post a Comment