2011-08-20 16 views
10

मैं mysql के साथ सिद्धांत 2 पीडीओ का उपयोग करता हूं।सिद्धांत 2 कनेक्शन बंद करें

जब तनाव सर्वर का परीक्षण, mysql निरस्त कनेक्शन (20% अप करने) का एक बहुत की रिपोर्ट।

मैं इस मुद्दे का पता लगाने की कोशिश कर रहा हूँ।

Mysql मैनुअल यह सुनिश्चित करें कि डेटाबेस के लिए कनेक्शन ठीक से बंद हो जाती हैं पता चलता है। http://dev.mysql.com/doc/refman/5.0/en/communication-errors.html

यदि कोई सिद्धांत वास्तव में कनेक्शन बंद करता है या नहीं, या लगातार कनेक्शन का उपयोग करता है तो मुझे कोई जानकारी नहीं मिल सकती है।

इसके अलावा, ऐसा कुछ हो जिसमें निरस्त कनेक्शन के लिए खाते में कर सकते है? मैं यहाँ नुकसान में हूँ।

पीएस। सर्वर उबंटू 10.04, nginx 1.x, php 5.3.5 (fpm) और mysql 5.1.41

+0

डॉक्टर 2 मैनुअल एपीसी या कुछ अन्य कैशिंग तंत्र का उपयोग करने की सिफारिश करता है। एक प्रदान करने में विफल होने के परिणामस्वरूप बहुत सारे कनेक्शन हो सकते हैं। क्या तुम्हारे पास कुछ है? – J0HN

+1

कनेक्शन के लिए कैश? – iBiryukov

+0

मेरे पास मेटाडेटा और प्रश्नों के लिए एपीसी कैश है। क्या आपके पास मैनुअल का एक लिंक है जहां वे वर्णन करते हैं कि कनेक्शन कैश कैसे करें? – iBiryukov

उत्तर

21

जो मैंने देखा है, सिद्धांत लगातार कनेक्शन का उपयोग करता है।

हम एक समस्या पर ठोकर खाई किया है, symfony2, जहां डेटाबेस "स्लीप" स्थिति में कनेक्शन के साथ स्पैम था में इकाई परीक्षण की शुरूआत की। समाधान है कि हमारे लिए काम किया:

$entityManager->getConnection()->close(); 
+1

क्या आप मुझे कॉल करते समय बता सकते हैं? हम इसे kernel.terminate या kernel.response घटनाओं में निष्पादित करने का प्रयास करते हैं लेकिन कनेक्शन अभी भी mysql में लटक रहे हैं। – Vail

+1

मैं इसे यूनिट परीक्षणों में उपयोग कर रहा था, इसलिए यह आंसू की विधि में था। क्षमा करें मैं आपकी बहुत मदद नहीं कर सकता। – wdev

+0

मैं अभी भी खुले कनेक्शन की सूची बढ़ने की सूची देखता हूं।: -/ – sensorario

1

मैं एक ही समस्या और

$entityManager->getConnection()->close(); 

काम करने लगता है है, लेकिन कुछ php संस्करणों में 'बेहतर' काम करता है अगर आप जोड़ने

gc_collect_cycles() 

कनेक्शन बंद करने के बाद। मुझे अभी भी पुराने PHP संस्करण में इस तरह के मुद्दे हैं, मुझे लगता है कि कचरा कलेक्टर से संबंधित कुछ हो सकता है। आप को अपडेट करता है, तो मैं सभी php संस्करणों

+0

मेरे मामले में gc_collect_cycles() ने PHPUnit परीक्षण निष्पादित करने के दौरान मेरे 'बहुत सारे कनेक्शन' त्रुटि को हल किया – Davincho

0

मैं इस ट्वीक पाया है के लिए एक अंतिम समाधान खोजने रखना होगा:

https://sroze.io/phpunit-mysql-too-many-connections-error-ab52cd5798c5

PHPUnit एक्सएमएल विकल्प फ़ाइल में processIsolation="true" विकल्प स्थापना चाल करने के लिए लगता है।

संबंधित मुद्दे