मैन्युअल सफाई:
आप प्रक्रिया को मार सकते हैं।
mysql> show full processlist;
+---------+------------+-------------------+------+---------+-------+-------+-----------------------+
| Id | User | Host | db | Command | Time | State | Info |
+---------+------------+-------------------+------+---------+-------+-------+-----------------------+
| 1193777 | TestUser12 | 192.168.1.11:3775 | www | Sleep | 25946 | | NULL |
+---------+------------+-------------------+------+---------+-------+-------+-----------------------+
mysql> kill 1193777;
लेकिन:
- php एप्लिकेशन त्रुटियों की रिपोर्ट कर सकता है (या वेबसर्वर, त्रुटि लॉग की जांच करें)
- जो टूटा नहीं है उसे ठीक न करें - अगर आपके पास कनेक्शन की कमी नहीं है, तो उन्हें छोड़ दें।
स्वचालित क्लीनर सेवा;)
या आप wait_timeout
और interactive_timeout
mysql> show variables like "%timeout%";
+--------------------------+-------+
| Variable_name | Value |
+--------------------------+-------+
| connect_timeout | 5 |
| delayed_insert_timeout | 300 |
| innodb_lock_wait_timeout | 50 |
| interactive_timeout | 28800 |
| net_read_timeout | 30 |
| net_write_timeout | 60 |
| slave_net_timeout | 3600 |
| table_lock_wait_timeout | 50 |
| wait_timeout | 28800 |
+--------------------------+-------+
9 rows in set (0.00 sec)
इसके साथ सेट करें:
set global wait_timeout=3;
set global interactive_timeout=3;
(और आपकी कॉन्फ़िगरेशन फ़ाइल में भी सेट करें, जब आपका सर्वर पुनरारंभ होता है)
लेकिन आप अंतर्निहित कारणों के बजाय लक्षणों का इलाज कर रहे हैं - कनेक्शन क्यों खुले हैं? यदि PHP स्क्रिप्ट समाप्त हो गई है, तो क्या उन्हें बंद नहीं करना चाहिए? सुनिश्चित करें कि आपका वेबसर्वर कनेक्शन पूलिंग का उपयोग नहीं कर रहा है...