MySQL सेटिंग्स का अनुकूलन - स्मृति से बाहर चल रहे mysqld


15

मैं थोड़ा उलझन में हूं कि मेरे सर्वर के लिए अनुकूलन करने के लिए मेरी my.conf फ़ाइल में कौन सी सेटिंग्स को बदलना है (mysql सर्वर हमारे उच्च ट्रैफ़िक के कारण क्रैश हो रहा है)।

यहाँ my.cnf फ़ाइल है:

[mysqld]

user            = mysql
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
port            = 3306
basedir         = /usr
datadir         = /var/lib/mysql
tmpdir          = /tmp
lc-messages-dir = /usr/share/mysql
skip-external-locking

key_buffer              = 16M
max_allowed_packet      = 16M
myisam-recover         = BACKUP
#max_connections        = 100
#table_cache            = 64
#thread_concurrency     = 10

query_cache_limit       = 1M
query_cache_size        = 16M

और सर्वर चश्मा हैं:

CPU Cores   2 cores
RAM (Memory)    1GB
SSD (Disk Space)    20GB

Ubuntu 12.04 एलटीएस चल रहा है

यहाँ मेरे विभाजन हैं:

NAME   FSTYPE   SIZE MOUNTPOINT LABEL
vda              20G            
├─vda1 ext4     476M /boot      
├─vda2 swap     477M [SWAP]     
└─vda3 ext4    19.1G / 

कोई भी सहायताकाफी प्रशंसनीय होगी।

त्रुटि लॉग को देखते हुए, मैं देख सकता हूं कि mysqld स्मृति से बाहर था:

Feb 17 11:02:06 111488 kernel: [8276839.559141] Out of memory: Kill process 20719 (mysqld) score 75 or sacrifice child
Feb 17 11:02:06 111488 kernel: [8276839.559209] Killed process 20719 (mysqld) total-vm:1347424kB, anon-rss:30524kB, file-rss:0kB

जवाबों:


10

Serverguide विकि से सामान्य उत्तर :

MySQL ट्यूनर Mysqltuner स्थापित करें

MySQL ट्यूनर एक उपयोगी उपकरण है जो एक चल रहे MySQL उदाहरण से जुड़ेगा और सुझाव देगा कि यह आपके वर्कलोड के लिए सबसे अच्छा कैसे कॉन्फ़िगर किया जा सकता है। सर्वर जितनी देर तक चलता है, उतनी ही बेहतर सलाह mysqltuner प्रदान कर सकता है। उत्पादन वातावरण में, उपकरण चलाने से पहले कम से कम 24 घंटे तक प्रतीक्षा करने पर विचार करें। आप Ubuntu रिपॉजिटरी से mysqltuner स्थापित कर सकते हैं:

sudo apt-get install mysqltuner

फिर एक बार इसके इंस्टाल होने के बाद इसे चलाएं:

 mysqltuner

और इसकी अंतिम रिपोर्ट की प्रतीक्षा करें। शीर्ष खंड डेटाबेस सर्वर के बारे में सामान्य जानकारी प्रदान करता है, और निचला खंड आपके my.cnf में परिवर्तन के लिए ट्यूनिंग सुझाव प्रदान करता है। इनमें से अधिकांश को सर्वर पर पुनः आरंभ किए बिना लाइव बदल दिया जा सकता है, उत्पादन में परिवर्तन के लिए प्रासंगिक चर के लिए आधिकारिक MySQL प्रलेखन (संसाधन अनुभाग में लिंक) के माध्यम से देखें। निम्नलिखित उत्पादन डेटाबेस से एक उदाहरण रिपोर्ट का हिस्सा है जो दिखाता है कि क्वेरी कैश की मात्रा बढ़ाने से कुछ लाभ हो सकते हैं:

-------- सिफारिशें ----------------------------------------- ------------
सामान्य सिफारिशें:
    बेहतर प्रदर्शन के लिए डीफ़्रेग्मेंट टेबल पर ऑप्टिमाइज़ टेबल चलाएँ
    फ़ाइल डिस्क्रिप्टर सीमाओं से बचने के लिए धीरे-धीरे table_cache बढ़ाएं
चर समायोजित करने के लिए:
    key_buffer_size (> 1.4G)
    query_cache_size (> 32M)
    table_cache (> 64)
    innodb_buffer_pool_size (> = 22G)

ट्यूनिंग डेटाबेस पर एक अंतिम टिप्पणी: जबकि हम मोटे तौर पर कह सकते हैं कि कुछ सेटिंग्स सबसे अच्छी हैं, प्रदर्शन आवेदन से आवेदन तक भिन्न हो सकते हैं। उदाहरण के लिए, Wordpress के लिए सबसे अच्छा काम क्या Drupal, Joomla या मालिकाना अनुप्रयोगों के लिए सबसे अच्छा नहीं हो सकता है। प्रदर्शन प्रश्नों के प्रकारों पर निर्भर करता है, अनुक्रमित का उपयोग, डेटाबेस डिजाइन कितना कुशल और इसी तरह। आप डेटाबेस ट्यूनिंग युक्तियों को खोजने के लिए कुछ समय बिताने के लिए उपयोगी हो सकते हैं जो आपके लिए उपयोग किए जा रहे अनुप्रयोगों के आधार पर हैं। एक बार जब आप एक निश्चित बिंदु को पार कर लेते हैं, तो आपके द्वारा किए गए किसी भी समायोजन में केवल मामूली सुधार होगा, और आप या तो एप्लिकेशन को बेहतर बनाने, या अधिक शक्तिशाली हार्डवेयर का उपयोग करके या दास सर्वर को जोड़कर अपने डेटाबेस वातावरण को बेहतर बनाने पर ध्यान देंगे।


  • Mysqltuner रिपोर्ट का प्रदर्शन मीट्रिक अनुभाग देखें। अधिकतम संभव मेमोरी को 50% से कम रखें।
  • tmp_table_size, max_heap_table_size variable: इन बराबर और उच्च रखने के लिए।
  • join_buffer_size, छोटी मात्रा में वृद्धि; इसके द्वारा गुणा किया जाएगा max_connections
  • innodb_buffer_pool_size। ऊँचा करो।


0

डॉक कंपोज़ के लिए संकल्प

mysql:
    volumes:
        - ./config/mysql/my.cnf:/etc/mysql/conf.d/my.cnf

कन्टैंट कॉन्फ़िगर करें ./config/mysql/my.cnf

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