2011-02-18 10 views
11

सभी के लिए बहुत अच्छा कनेक्शन। मुझे एक अजीब त्रुटि है। मैं एक चैट है कि इस तरह काम करता है बनाया है:php, mysql - डेटाबेस त्रुटि

  • प्रश्न/उत्तर एक डाटाबेस में डाला जाता है
  • हर 2 सेकंड एक ajax अनुरोध एक PHP स्क्रिप्ट है कि नए सवाल लाने के लिए भेज दिया जाता है/उत्तर देता

यह आज तक ठीक काम किया जब मैं इस त्रुटि मिली:

Uncaught exception 'PDOException' with message 'SQLSTATE[HY000] [1040] Too many connections' in /var/www/html/dbdev/include/Zend/Db/Adapter/Pdo/Abstract.php:129 
Stack trace: #0 /var/www/html/dbdev/include/Zend/Db/Adapter/Pdo/Abstract.php(129): PDO->__construct('mysql:host=loca...', '', '', Array) 
s#1 /var/www/html/dbdev/include/Zend/Db/Adapter/Pdo/Mysql.php(96): Zend_Db_Adapter_Pdo_Abstract->_connect() 
s#2 /var/www/html/dbdev/include/Zend/Db/Adapter/Abstract.php(448): Zend_Db_Adapter_Pdo_Mysql->_connect() 
s#3 /var/www/html/dbdev/include/Zend/Db/Adapter/Pdo/Abstract.php(238): Zend_Db_Adapter_Abstract->query('select profile_...', Array) 
s#4 /var/www/html/dbdev/include/Zend/Db/Adapter/Abstract.php(782): Zend_Db_Adapter_Pdo_Abstract->query('select profile_...', Array) 
s#5 /var/www/html/dbdev/include/Profile.php(43): Zend_Db_Adapter_Abstract->fetchPairs('select profile_...') 
s#6 /var/www/html/dbdev/public_html/index.php(29): Profile->load() 
s#7 {main} Next exception 'Zend_Db_Adapter_Exception' with in /var/www/html/dbdev/include/Zend/Db/Adapter/Pdo/Abstract.php on line 144 

समस्या यह है कि हम यह है कि कई नहीं थे ... (8) और मुझे नहीं लगता कि डाटाबेस 8 से अधिक का समर्थन नहीं कर सकता है 16 कॉन एक साथ क्रियाएं (विनिर्देशों पर लिखा गया है कि चैट को 50-100 उपयोगकर्ताओं का समर्थन करना चाहिए ताकि 8 ... छोटा हो)।

तो ... क्या कोई मुझे बता सकता है कि ऐसा क्यों हुआ (कल हम 15 थे और ठीक काम किया) और इसे कैसे हल किया जाए? आपके सहयोग के लिए धन्यवाद। यदि आपको किसी कोड नमूने की आवश्यकता है तो बस पूछें।

+0

क्या बाहर की डाल " 'max_connections' जैसे शो चर," mysql क्लाइंट – Zimbabao

उत्तर

28

"बहुत अधिक कनेक्शन" त्रुटि के लिए विभिन्न कारणों में से एक गुच्छा रहे हैं।

चेक बाहर MySQL.com पर इस FAQ पृष्ठ: http://dev.mysql.com/doc/refman/5.5/en/too-many-connections.html

"max_connections" के लिए अपने my.cnf फ़ाइल की जाँच करें। यदि कोई भी अस्तित्व में नहीं है:

[mysqld] 
set-variable=max_connections=250 

हालांकि डिफ़ॉल्ट 151 है, तो आपको ठीक होना चाहिए।

यदि आप किसी साझा होस्ट पर हैं, तो हो सकता है कि अन्य उपयोगकर्ता बहुत से कनेक्शन ले रहे हों।

अन्य समस्याओं को देखने के लिए लगातार कनेक्शन का उपयोग और डिस्कस्पेस से बाहर चलना है।

1

कृपया जांचें कि क्या आप अपने प्रत्येक अनुरोध (mysql_connect (...)) के साथ एक नया कनेक्शन खोलते हैं या नहीं। यदि आप ऐसा करते हैं, तो सुनिश्चित करें कि आप कनेक्शन को बाद में बंद करें (mysql_close ($ link) का उपयोग करके)।

इसके अलावा, आपको इस व्यवहार को बदलने पर विचार करना चाहिए क्योंकि प्रत्येक उपयोगकर्ता के लिए एक स्थिर कनेक्शन रखना आपके कार्य को पूरा करने का एक बेहतर तरीका हो सकता है।

आप पहले से ही ऐसा नहीं किया है, तो यह स्पष्ट है, लेकिन फिर भी उपयोगी जानकारी संसाधन पर एक नज़र डालें: http://php.net/manual/function.mysql-connect.php

11

त्रुटि SQLSTATE[HY000] [1040] Too many connections एक SQL त्रुटि है, और SQL सर्वर से कोई लेना देना नहीं है। सर्वर से कनेक्ट अन्य अनुप्रयोग हो सकते हैं। सर्वर के पास अधिकतम उपलब्ध कनेक्शन नंबर है।

यदि आपके पास phpmyadmin है, तो आप सेटिंग को जांचने के लिए 'चर' टैब का उपयोग कर सकते हैं।

तुम भी तालिका तो जैसे स्थिति को क्वेरी कर सकते हैं:

show status like '%onn%'; 

या उस पर कुछ भिन्नता। जाँच क्या चर वहाँ

हैं के लिए the manual (बारे में पता होना, 'कनेक्शन' वर्तमान कनेक्शन नहीं है, कि लिंक की जांच :))

+0

जांच पर। मैं एक मिनट में देखता हूं – zozo

+0

(इन वर्र्स बीटीडब्ल्यू को देखने के लिए एक और तरीका जोड़ा गया) – Nanne

4

आप मैक कनेक्शन सीमा तक पहुँच रहे हैं, तो /etc/my.cnf के पास जाकर [mysqld] धारा के तहत max_connections = 500

जोड़ने और MySQL पुनः आरंभ करें।

1

यह एक ही समय में बहुत से कनेक्शन या कई बार चैट के कारण हो सकता है। इसके अलावा यह बहुत सारे सत्र के कारण हो सकता है।

इस समस्या को हल करने का सबसे अच्छा तरीका MySQL को पुनरारंभ करना है।

service mysqld restart 

या

service mysql restart 

या

/etc/init.d/mysqld restart