मेरे पास एक रेल 2.3 ऐप है जो बहुत से MySQL कनेक्शन खोल रहा है। एक दिन से भी कम समय के बाद (~ 400 आरपीएम पर) एक प्रक्रिया में हमारे द्वारा उपयोग किए जाने वाले दो mysql सर्वरों के लिए 83 स्थापित कनेक्शन थे।रेल्स MySQL बहुत सारे कनेक्शन
हम mysql2 मणि (0.2.18) का उपयोग कर रहे हैं, और mysql क्लाइंट है: mysql Ver 14.12 Distrib 5.0.77, for redhat-linux-gnu (i686) using readline 5.1
।
मैं इन लीक कहां हो रहा हूं समस्या निवारण कैसे कर सकता हूं? हमारे परीक्षण में, हम कभी भी उत्पादन में रिसाव नहीं कर पाएंगे, केवल उत्पादन में ही।
MySQL में, हम खुले कनेक्शन देखने के लिए show processlist;
चला सकते हैं। ऐप सर्वर पर, हम sudo netstat -ntp | grep 3306 | grep ESTABLISHED | awk '{print $7}' | sort | uniq -c | sort -n
के साथ प्रति पिन कनेक्शन की संख्या गिन सकते हैं।
83 के साथ क्या गलत है? जिस तरह से आप इसे पैनिंग कर रहे हैं, वह 8300 है। – tadman
84 रेल ऐप हैं, और हमारे mysql सर्वर में अधिकतम 2000 कनेक्शन हैं। तो यदि सभी रेल ऐप्स में 23 से अधिक कनेक्शन हैं, तो हम बाहर निकलते हैं। हमारा समाधान वर्तमान में हर 5 घंटे में हमारे रेल ऐप उदाहरणों को पुनरारंभ करना है। –
हमने इसे "wait_timeout: 300" जोड़कर हमारे डेटाबेस.आईएमएल कॉन्फ़िगरेशन में हल करके हल किया। यह 5 मिनट के बाद अप्रयुक्त mysql कनेक्शन बंद कर देता है। –