क्या मुझे प्रक्रिया सूची में mysql नींद की स्थिति प्रक्रिया के बारे में चिंता करनी चाहिए


11

वेबसाइट संचालन के दौरान, mysql प्रक्रिया सूची में, मुझे "SLEEP" के रूप में चिह्नित "कमांड" कॉलम के साथ कुछ प्रक्रियाएं दिखाई देती हैं।

क्या मुझे चिंता करनी चाहिए? इसे कैसे रोका जाए?


जवाबों:


17

यहां तक ​​कि हम में से सबसे शक्तिशाली लोगों को कभी-कभी सोने की जरूरत होती है। नींद के बिना एक उत्सुक और अनिद्रा के कारण सभी प्रकार के गंभीर लक्षण हो सकते हैं।

अधिक गंभीरता से: नींद की स्थिति का मतलब है कि MySQL प्रक्रिया ने अपनी क्वेरी के साथ किया है, लेकिन क्लाइंट-साइड अभी तक बाहर नहीं निकला है। कई वेब एप्लिकेशन बाद में अपने कनेक्शन को साफ नहीं करते हैं, जो नींद की प्रक्रिया MySQL प्रक्रियाओं की ओर जाता है। चिंता मत करो अगर उनमें से केवल कुछ मुट्ठी भर हैं; MySQL एक कॉन्फ़िगर करने योग्य समयबाह्य अवधि (Wait_timeout) के बाद साफ करेगा।

या यदि आपका वेब एप्लिकेशन लगातार कनेक्शन और कनेक्शन पूलिंग का उपयोग करता है, तो नींद की बहुत सारी प्रक्रियाओं का होना पूरी तरह से सामान्य है: उस स्थिति में आपका आवेदन सिर्फ उदाहरण के लिए 100 SQL कनेक्शन खोलता है और उन्हें खुला रखता है। यह ओवरहेड खोलने / बंद करने के कनेक्शन को कम करता है। जब तक कि आपका एप्लिकेशन बहुत व्यस्त न हो, यह सामान्य है कि लगभग हर SQL प्रक्रिया में कुछ करने की आवश्यकता नहीं है, इसलिए वे सोते हैं।


5

जब तक आपके पास उनमें से हजारों नहीं हैं, तब तक उनके बारे में चिंता न करें। आमतौर पर वे एक डेटाबेस कनेक्शन का संकेत देते हैं जो वर्तमान में कुछ भी नहीं कर रहा है, लेकिन अन्यथा अभी भी जीवित है।

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

यदि कनेक्शन बंद नहीं है, तो यह "SLEEP" स्थिति में तब तक बना रह सकता है जब तक कि यह समाप्त न हो जाए। उस मामले में आप बहुत सारी नींद की प्रक्रियाओं को समाप्त कर सकते हैं। लेकिन जब तक आप db सर्वर पर मेमोरी मुद्दों में नहीं चलते हैं, यह कोई बड़ी समस्या नहीं है।


3

Max_connections चर को बढ़ाने से पहले, आपको यह देखना होगा कि शो प्रक्रिया सूची कमांड को चलाकर आपके पास कितने गैर-इंटरैक्टिव कनेक्शन हैं।

यदि आपके पास कई नींद कनेक्शन हैं, तो आपको कुछ समय इंतजार करने के बाद गैर-संवादात्मक कनेक्शन को बंद करने के लिए "प्रतीक्षा_टाइम" चर के मूल्य को कम करना होगा।

  • प्रतीक्षा_टाइम मान दिखाने के लिए:
शो का संस्करण वारिब्लेस 'प्रतीक्षा_ टाइमआउट' पसंद करता है;

+ --------------- + ------- +
| चर_नाम | मान |
+ --------------- + ------- +
| Wait_timeout | 28800 |
+ --------------- + ------- +

मूल्य दूसरे में है, इसका मतलब है कि गैर-संवादात्मक कनेक्शन अभी भी 8 घंटे तक है।

  • "प्रतीक्षा_टाइम" चर का मान बदलने के लिए:
सेट सत्र Wait_timeout = 600;
क्वेरी ठीक है, 0 पंक्तियाँ प्रभावित (0.00 सेकंड)

10 मिनट के बाद अगर नींद कनेक्शन अभी भी mysql या MariaDB सो रहा है तो उस कनेक्शन को छोड़ दें।

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