MySQL कमांड में प्रॉब्लम शो: नींद


85

जब मैं MySQL डेटाबेस में SHOW PROCESSLIST चलाता हूं, तो मुझे यह आउटपुट मिलता है:

mysql> show full processlist;

+--------+------+-----------+--------+---------+-------+-------+-----------------------+
| Id     | User | Host      | db     | Command | Time  | State | Info                  |
+--------+------+-----------+-------+---------+-------+-------+-----------------------+
| 411665 | root | localhost | somedb | Sleep   | 11388 |       | NULL                  | 
| 412109 | root | localhost | somedb | Query   |     0 | NULL  | show full processlist | 
+--------+------+-----------+-------+---------+-------+-------+------------------------+

मैं "स्लीप" प्रक्रिया को जानना चाहूंगा जो कमांड के तहत है। इसका क्या मतलब है? यह लंबे समय से क्यों चल रहा है और NULL दिखा रहा है? यह डेटाबेस को धीमा कर रहा है और जब मैं इस प्रक्रिया को मारता हूं, तो यह सामान्य रूप से काम करता है। क्रिप्या मेरि सहायता करे।


यह कुछ नहीं करता है यह सिर्फ वहाँ बैठता है और एक कनेक्शन के लिए "इंतजार" करता है।
रुफिनस

1
क्या हमें पता चल सकता है कि कनेक्शन के लिए कौन सी क्वेरी प्रतीक्षा कर रही है? क्या मेरी कतार कुछ समझ में आती है? एएनडी यह मेरे डेटाबेस को धीमा क्यों कर रहा है?
gthm

8
यह कनेक्शन के लिए इंतजार कर एक क्वेरी नहीं है। इसका कनेक्शन सूचक समय समाप्त होने की प्रतीक्षा कर रहा है। और इसका प्रदर्शन पर प्रभाव नहीं पड़ता है। केवल इसका उपयोग कुछ बाइट्स है जैसा कि हर कनेक्शन करता है। अपने पूल के एक कनेक्शन का उपयोग करके वास्तव में सबसे खराब स्थिति, यदि आप कंसोल क्लाइंट के माध्यम से कई बार कनेक्ट करेंगे और कनेक्शन को बंद किए बिना क्लाइंट को बंद कर देंगे तो आप अपने सभी कनेक्शन का उपयोग कर सकते हैं और फिर से कनेक्ट होने में सक्षम होने के लिए समय समाप्त होने का इंतजार करना होगा। ... लेकिन यह अत्यधिक संभावना नहीं है :-)
रूफिनस

2
@ रुफिनस, मुझे भी यही समस्या है। आप क्यों कहते हैं लेकिन यह अत्यधिक संभावना नहीं है ? और कौन से पैरामीटर my.cnf में टाइमआउट स्लीपिंग कनेक्शन को कॉन्फ़िगर करने से संबंधित है?
हमीद्रेज़ा

जवाबों:


75

यह कनेक्शन के लिए प्रतीक्षा कर रहा क्वेरी नहीं है; यह एक कनेक्शन सूचक है जो समय समाप्त होने की प्रतीक्षा कर रहा है।

इसका प्रदर्शन पर प्रभाव नहीं पड़ता है। केवल एक चीज जो इसका उपयोग कर रही है वह कुछ बाइट्स है जैसा कि हर कनेक्शन करता है।

वास्तव में सबसे खराब स्थिति: यह आपके पूल के एक कनेक्शन का उपयोग कर रहा है; यदि आप कंसोल क्लाइंट के माध्यम से कई बार कनेक्ट होते हैं और कनेक्शन बंद किए बिना क्लाइंट को बंद कर देते हैं, तो आप अपने सभी कनेक्शनों का उपयोग कर सकते हैं और टाइमआउट के लिए फिर से कनेक्ट होने में सक्षम होने की प्रतीक्षा करनी होगी ... लेकिन यह अत्यधिक संभावना नहीं है :-)

"स्लीप" प्रविष्टियों से भरा MySql प्रोसिस्टलिस्ट देखें "बहुत सारे कनेक्शन" के लिए? और अधिक जानकारी के लिए /dba/1558/how-long-is-too-long-for-mysql-connections-to-sleep


2
समस्या यह हो सकती है यदि आपके पास डेटाबेस तक सीमित कनेक्शन हैं। क्योंकि यहां तक ​​कि उन कनेक्शनों के प्रदर्शन पर प्रभाव नहीं पड़ता है, फिर भी वे कनेक्शन के रूप में गिनते हैं।
mrded

26

"स्लीप" राज्य कनेक्शन सबसे अधिक बार कोड द्वारा बनाए जाते हैं जो डेटाबेस से लगातार कनेक्शन बनाए रखता है।

इसमें एप्लिकेशन फ्रेमवर्क या क्लाइंट-साइड डेटाबेस एडमिनिस्ट्रेशन टूल द्वारा बनाए गए कनेक्शन पूल शामिल हो सकते हैं।

जैसा कि टिप्पणियों में ऊपर उल्लेख किया गया है, इन कनेक्शनों के बारे में चिंता करने का वास्तव में कोई कारण नहीं है ... जब तक कि आपको यह पता नहीं है कि कनेक्शन कहां से आ रहा है।

(CATAT: यदि आपके पास इस प्रकार के कनेक्शनों की एक लंबी सूची है, तो एक साथ कनेक्शन के बाहर चलने का खतरा हो सकता है)


5

मुझे यह उत्तर यहां मिला: /dba/1558 । निम्नलिखित (या my.cnf के भीतर) का उपयोग करके संक्षेप में टाइमआउट समस्या को दूर कर देंगे।

SET GLOBAL interactive_timeout = 180; SET GLOBAL wait_timeout = 180;

यह कनेक्शन को समाप्त करने की अनुमति देता है यदि वे 3 मिनट (या जो भी आप परिभाषित करते हैं) नींद की स्थिति में रहते हैं।


0

नींद का अर्थ है कि धागा कुछ भी नहीं है। समय बहुत बड़ा बीक्युस एंथर थ्रेड क्वेरी है, लेकिन सर्वर को डिसकनेक्ट न करें, डिफ़ॉल्ट Wait_timeout = 28800; इसलिए आप मानों को छोटा सेट कर सकते हैं, जैसे 10. आप थ्रेड को भी मार सकते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.