बहुत सारी MySQL प्रक्रियाएँ


12

मैं अपने सर्वर के साथ एक दोस्त की मदद करने की कोशिश कर रहा हूं, जब उसने मुझे बताया कि उसकी MySQL बहुत अधिक मेमोरी का उपयोग कर रही है ... यह पता चला है कि यह न केवल बहुत अधिक मेमोरी का उपयोग कर रहा है, बल्कि कई मायसिक प्रक्रिया भी चल रही है!

यहाँ का परिणाम है ps auxww|grep mysql: http://pastebin.com/kYrHLXVW

तो मूल रूप से 13 MySQL प्रक्रियाएं हैं, और mysqladmin के अनुसार केवल 1 क्लाइंट जुड़ा हुआ है ...

थोड़ी देर के बाद, इनमें से प्रत्येक प्रक्रिया 50mb तक की मेमोरी खा जाती है, इसलिए यह बहुत सारे मेमोरी का उपभोग करती है ...

मैं सीधे / usr / share / mysql से my-medium.cnf config टेम्प्लेट का उपयोग कर रहा हूं ... मैंने mysql सर्वर को फिर से शुरू किया लेकिन, जैसे ही यह शुरू होता है, 13 प्रक्रियाएं वापस आ जाती हैं ... मुझे नहीं पता कि क्या है समस्या हो सकती है ... किसी भी विचार / सुझाव वास्तव में सराहना की जाएगी!

जवाबों:


16
mysql     9804  0.0  0.6 58556 22960 pts/0   S    12:43   0:00  \_ /usr/sbin/mysqld --basedir=/ --datadir=/var/lib/mysql --user=mysql --pid-file=/var/lib/mysql/myhostname.pid --skip-external-locking --port=3306 --socket=/var/lib/mysql/mysql.sock
mysql     9807  0.0  0.6 58556 22960 pts/0   S    12:43   0:00      \_ /usr/sbin/mysqld --basedir=/ --datadir=/var/lib/mysql --user=mysql --pid-file=/var/lib/mysql/myhostname.pid --skip-external-locking --port=3306 --socket=/var/lib/mysql/mysql.sock
mysql     9808  0.0  0.6 58556 22960 pts/0   S    12:43   0:00          \_ /usr/sbin/mysqld --basedir=/ --datadir=/var/lib/mysql --user=mysql --pid-file=/var/lib/mysql/myhostname.pid --skip-external-locking --port=3306 --socket=/var/lib/mysql/mysql.sock
mysql     9809  0.0  0.6 58556 22960 pts/0   S    12:43   0:00          \_ /usr/sbin/mysqld --basedir=/ --datadir=/var/lib/mysql --user=mysql --pid-file=/var/lib/mysql/myhostname.pid --skip-external-locking --port=3306 --socket=/var/lib/mysql/mysql.sock
mysql     9810  0.0  0.6 58556 22960 pts/0   S    12:43   0:00          \_ /usr/sbin/mysqld --basedir=/ --datadir=/var/lib/mysql --user=mysql --pid-file=/var/lib/mysql/myhostname.pid --skip-external-locking --port=3306 --socket=/var/lib/mysql/mysql.sock
[ ... repeated output truncated ... ]

वे 13 * 50mb का उपयोग नहीं कर रहे हैं RAM - वे शायद 70mb कुल की तरह कुछ का उपयोग कर रहे हैं । याद रखें कि लिनक्स प्रक्रियाओं के बीच अनमॉडिफाइड मेमोरी पेजों को साझा करेगा, इसलिए यदि आपके सर्वर को नए सिरे से शुरू किया गया है तो उस मेमोरी को सभी साझा किया जाएगा। वास्तव में, चूंकि mysql को थ्रेड किया जाता है, इसलिए संभवत: प्रति थ्रेड आवंटित की गई मेमोरी भी कम होगी। यदि आप प्रत्येक mysql प्रक्रिया के मेमोरी उपयोग के बारे में चिंतित हैं, तो देखें /etc/mysql/my.cnfऔर mysqld में चर देखें:

  • key_buffers
  • thread_stack
  • thread_cache_size
  • max_connections
  • query_cache_limit
  • query_cache_size

हालांकि, चेतावनी दी जाती है कि वे धुन करने के लिए बहुत शक्तिशाली चर हैं, और आप आसानी से अपने mysql प्रदर्शन को बहुत कम सेट कर सकते हैं या स्मृति को बर्बाद कर सकते हैं, जो कि उन्हें कहीं अधिक सेट करके कहीं और उपयोग किया जा सकता है।

एक आसान प्रारंभिक बिंदु यह है कि अपने mysql उदाहरण को ट्यून करने का सबसे अच्छा तरीका यह है कि अपने ऐप को थोड़ा सा चलाएं, फिर यहां से mysqltune स्क्रिप्ट को चलाएं , जो आपके प्रदर्शन काउंटरों का विश्लेषण करेगा, फिर आप क्या बदल सकते हैं, इस बारे में एक सिफारिश तैयार करें आपका सर्वर कॉन्फ़िगरेशन।


1
मुझे नहीं पता था mysqltune, बहुत उपयोगी धन्यवाद। इसके अलावा, कोई भी htopहमारे थ्रेड्स को रंगने के लिए उपयोग कर सकता है और प्रति प्रक्रिया में उपयोग की जाने वाली वास्तविक मेमोरी को देख सकता है।
मॉवरोन

3

लिनक्स अलग-अलग प्रक्रियाओं के रूप में थ्रेड दिखाता है। MySQL प्रति कनेक्शन एक धागा शुरू करता है। के psसाथ चल रहा है f। उदाहरण के लिए, ps auxfwयह प्रदर्शित करेगा कि धागे कैसे संबंधित हैं।

MySQL के कितने कनेक्शन हैं? show full processlist;MySQL क्लाइंट में चलाएं । जो आप दिखा रहे हैं, उससे मुझे विश्वास भी नहीं हो रहा है कि कुछ गड़बड़ है।


यहाँ परिणाम है: pastebin.com/raw.php?i=XNCsG6KS सर्वर अभी शुरू नहीं हुआ था यकीन है कि अगर यह मदद करता है ... init लिपियों से आप /etc/init.d/mysql की सामग्री का मतलब है?
user24994

वह मुझे पूरी तरह से सामान्य लगता है।
वार्नर

show full processlistडेटाबेस के अनुसार 2 कनेक्शन हैं। उनमें से एक लोकलहोस्ट एग्जीक्यूट हो रहा है show full processlist, दूसरा भी मैं ही हूं, phpmyadmin के जरिए। कोई और कनेक्शन नहीं होना चाहिए क्योंकि साइट अभी तक लाइव नहीं है ...
17:24 पर user24994

कनेक्शन की मात्रा इस बात पर निर्भर करने वाली है कि आपका आवेदन किस तरह से कार्य करता है और जरूरी नहीं कि वह सीधे उपयोगकर्ताओं की मात्रा से संबंधित हो। MySQL cnf सेटिंग के आधार पर मेमोरी का उपयोग करता है। क्या आपको लगता है कि यह कुछ भी गलत कर रहा है?
वार्नर

क्षमा करें, मुझे लगता है कि यह वास्तव में मेरे प्रश्न में स्पष्ट नहीं था, यह पूरी तरह से संभव है कि कुछ भी गलत नहीं हो रहा है! मैंने अभी देखा कि mysql बहुत मेमोरी (लगभग 13 * 50mb, इसलिए 650mb RAM) का उपयोग कर रहा था और अभी तक साइट पर कोई ट्रैफ़िक नहीं आया है ... बस मुझे phpmyadmin में गड़बड़ हो रही है। इसलिए मुझे लगता है कि मेरा प्रश्न अधिक था "क्या कुछ गलत है?" इसके बजाय "क्या गलत है" :)
user24994

1

आप MySQLTuner को आज़माना चाहते हैं, जो मुझे बहुत मददगार लगा, यह आपको सुझाव देगा कि आपको कौन-कौन से वैरिएबल वेरिएबल को एडजस्ट करने की कोशिश करनी चाहिए।


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