mysql ऑटो अधिकतम समायोजन मूल्यों को समायोजित करता है


11

मैंने my.cnf फ़ाइल में अधिकतम कनेक्शन लगभग 2000 में सेट किया है।

max_connections=2048

मैं ५.५.२० पर अपग्रेड हो गया हूं और अब मुझे त्रुटि लॉग में निम्न पंक्ति दिखाई देती है।

120201 19:40:24 [Warning] Changed limits: max_open_files: 1024  max_connections: 214  table_cache: 400

Mysql ने अधिकतम कनेक्शन मान को 214 में क्यों बदल दिया?

# mysqladmin variables | grep max_connections
| max_connections | 214                                               

OS द्वारा प्रतिबंधित सॉफ्ट और हार्ड ओपन फाइलें 1024 हैं

# ulimit -Sa | grep "open files"
open files                      (-n) 1024

# ulimit -Ha | grep "open files"
open files                      (-n) 1024

वास्तव में उपयोग किए गए अधिकतम कनेक्शन की संख्या:

# mysql -e"show status like '%used_connections%'"
+----------------------+-------+
| Variable_name        | Value |
+----------------------+-------+
| Max_used_connections | 95     |
+----------------------+-------+

1
4096 की तरह उच्चतर खुली फ़ाइलों को सेट करने का प्रयास करें।ulimit -n 4096

व्यवहार बदल गया है? मेरे पास 5.0.77 संस्करण था और मैंने इस मुद्दे पर ध्यान नहीं दिया। यह तभी होता है जब मैं ५.५.२० पर अपग्रेड किया जाता है मेरे पास मान बदल गए हैं!
शांतनुओ

1
बस स्पष्ट पूछना है। क्या आपने पुष्टि की है कि अपग्रेड ने आपके my.cnf को नहीं बदला है? इसके अलावा, क्या ओएस? क्या यह पैकेज मैनेजर द्वारा स्थापित किया गया था yum? यदि हां, तो कौन सा पैकेज?
डेरेक डाउनी 19

जवाबों:


6

यह मुझे ठीक लगता है। आपके पास इससे अधिक बड़ा_कनेक्ट नहीं हो सकता, क्योंकि आप Open_files_limit बहुत कम हैं। हर कनेक्शन के लिए MySQL कई फाइलें खोलता है। यहाँ एक नज़र रखना ।

तो, आपको अपने ओएस पर खुली फ़ाइलों की सीमा बढ़ानी होगी, और बाद में, आप अधिक से अधिक max_connections मान डाल सकते हैं।


5

यह वही समस्या प्रतीत होती है जिसका मैंने यहाँ स्टैकओवरफ्लो में उत्तर दिया था , हालाँकि मैं CentOS 7 और MySQL 5.6.26 का उपयोग कर रहा था

आपको mysql उपयोगकर्ता (limit.conf में) और mysql सेवा के लिए (mysql.service फ़ाइल में) दोनों के लिए अपनी खुली फ़ाइलों को सीमित करने की आवश्यकता है

इन दो पंक्तियों को /etc/security/limits.conf में जोड़ें

mysql hard nofile 65535
mysql soft nofile 65535

इस लाइन को /usr/lib/systemd/system/mysqld.service ([सेवा अनुभाग) में संलग्न करें

LimitNOFILE=65535

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


अन्य समाधान है: dba.stackexchange.com/questions/32987/…
नव

@Nav - हाँ, आप कॉन्फ़िगर किए गए कनेक्शन की अधिकतम संख्या का उपयोग नहीं कर सकते हैं यदि आपका ओएस उचित संख्या में फ़ाइल हैंडल को mysqld द्वारा उपयोग करने की अनुमति नहीं दे रहा है
MNB

इसके अलावा, उबंटू 15.04+ को एक अलग दृष्टिकोण की आवश्यकता है: stackoverflow.com/questions/23977095/…
नव

0

यह नए mysqld में कुछ बग प्रतीत होता है। मुझे भी यही समस्या थी। 700 पर अधिकतम_कनेक्ट स्थापित करना काम करता है, लेकिन अगर मैंने इसे 900 पर सेट किया है, तो स्टार्टअप के दौरान इसे 214 पर रीसेट किया गया था। यदि यह एक उद्देश्यपूर्ण परिवर्तन था, तो यह इसे 700 या कुछ इसी तरह कम कर देता था, मूल्य 214 से कोई मतलब नहीं है।
वैसे भी, अलिमेट-एन के साथ डिस्क्रिप्टर की सीमा को बढ़ाने से समस्या ठीक हो जाती है।

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