MySQL ओएस द्वारा हर 25 दिन या तो मारा जाता है


9

लगभग 4 महीने पहले हमने MS SQL सर्वर से MySQL 5.5 में माइग्रेट किया था । तब से हम लगभग 25 दिनों में एक बार एक मुद्दे का सामना कर रहे हैं, जहां से CentOS स्मृति से बाहर चला जाता है और परिणामस्वरूप यह MySQL को मारता है। MySQL safe mysql को पुनरारंभ करता है इसलिए डेटाबेस केवल एक या दो मिनट के लिए पूरी तरह से डाउन हो जाता है, लेकिन CentOS mysqld थ्रेड को मारने से पहले हम घंटों तक प्रदर्शन और कनेक्टिविटी के नुकसान का सामना कर सकते हैं।

हम आम तौर पर 1 बजे से सुबह 5 बजे तक मुद्दों को देखते हैं , लेकिन उस दिन के दौरान जब यातायात उच्चतम होता है जो इस स्थिति के बारे में वास्तव में चकित करता है। आम तौर पर 1 बजे से सुबह 5 बजे तक कनेक्टिविटी और प्रदर्शन के मुद्दों को देखने के बावजूद, mysql सर्वर आमतौर पर 4 AM या 5 AM के आसपास मारा जाता है, उसी समय mysqldump चलता है।

हमने सोचा mysqldumpकि अपराधी हो सकता है। हालाँकि, यह रोजाना सुबह 4 बजे शुरू होता है, लेकिन हम कुछ रातों में 1 बजे तक समस्याओं को देखते हैं। इसके अलावा स्विच के mysqldumpसाथ चल रहा है --opt, इसलिए यह डंप प्रक्रिया के दौरान बहुत सारे डेटा को बफर नहीं करना चाहिए।

हमने उस बैकअप ऐप पर भी विचार किया जिसका हम उपयोग कर रहे हैं जो डंप फ़ाइलों को प्राप्त करता है और उन्हें टेप करने के लिए बैक करता है। हमने समय बदल दिया कि यह सुबह 6 बजे तक चलता है और समस्या अपरिवर्तित थी।

हमारे पास कई नौकरियां हैं जो समय-समय पर रात भर चलती हैं, लेकिन कोई भी बहुत गहन संसाधन नहीं है और सभी को चलाने में बहुत लंबा समय नहीं लगता है।

यहाँ कुछ आँकड़े हैं जिनके साथ हम काम कर रहे हैं और my.cnfफ़ाइल में वर्तमान प्रविष्टियाँ । जिन चीजों के लिए हम कोशिश कर सकते हैं, उनकी कोई मदद या सुझाव बहुत सराहना करेंगे।

सर्वर आँकड़े :

  • इंटेल (R) Xeon (R) CPU E5530 @ 2.40GHz
  • सीपीयू कोर: 4
  • मेमोरी: 12293480 (12 गिग्स)

OS :

  • सेंटोस 5.5
  • लिनक्स 2.6.18-274.12.1.el5 # 1 एसएमपी टीयू 29 नवंबर 13:37:46 ईएसटी 2011 x86_64 x86_64 x86_64 GNU / लिनक्स

my.cnf:

[client]
port = 3306
socket = /var/lib/mysql/mysql.sock

[mysqld]
port = 3306
socket = /var/lib/mysql/mysql.sock

skip-name-resolve

ssl-ca=<file location>
ssl-cert=<file location>
ssl-key=<file location>

back_log = 50
max_connections = 500
table_open_cache = 2048
table_definition_cache = 9000
max_allowed_packet = 16M
binlog_cache_size = 1M
max_heap_table_size = 64M
read_buffer_size = 2M
read_rnd_buffer_size = 16M
sort_buffer_size = 8M
join_buffer_size = 8M
thread_cache_size = 130
thread_concurrency = 16
query_cache_size = 64M
query_cache_limit = 1M
ft_min_word_len = 4
default-storage-engine=INNODB
thread_stack = 192K
transaction_isolation = REPEATABLE-READ
tmp_table_size = 64M
log-bin=/log/mysql/mysql-bin
expire_logs_days=7
binlog_format=mixed
key_buffer_size = 32M
bulk_insert_buffer_size = 64M
myisam_sort_buffer_size = 128M
myisam_max_sort_file_size = 10G
myisam_repair_threads = 1
myisam_recover
innodb_additional_mem_pool_size = 16M
innodb_buffer_pool_size = 7G
innodb_thread_concurrency = 16
innodb_flush_log_at_trx_commit = 2
innodb_log_file_size = 256M
innodb_log_files_in_group = 3
innodb_max_dirty_pages_pct = 70
innodb_lock_wait_timeout = 120

[mysql]
no-auto-rehash

[mysqld_safe]
open-files-limit = 8192

त्रुटि लॉग dev.mysql.com/doc/refman/5.5/en/error-log.html कॉन्फ़िगर करें और समस्या होने पर कुछ पंजीकृत होने की जांच करें

मैंने इस साइट को omh.cc/mycnf का उपयोग किया और निर्धारित किया कि समस्या कॉन्फ़िगरेशन के साथ ही सबसे अधिक संभावना है। मैं myisam संबंधित कनेक्शन पूल के एक बहुत को समायोजित करने जा रहा हूं और देखें कि क्या मेमोरी की खपत में मदद करता है।

2
CentOS 5.5 चालू नहीं है। 5.8 है (यदि आप OS सुरक्षा की परवाह करते हैं)
Nils

1
समाधान दिलचस्प होगा। क्या आप इसे अपने प्रश्न के उत्तर के रूप में पोस्ट कर सकते हैं?
Nils

Reddit थ्रेड में डुप्लिकेट पोस्ट जहां इसे हल किया गया था। यह MySQL के मंचों
मार्क मैकेंस्ट्री

जवाबों:


2
  1. आपको MySQL त्रुटि लॉग की जांच करनी चाहिए

  2. जाँच करें कि यह मान ulimit -aखुली फाइलों के समान है:

    int my.cnf 
    [mysqld_safe]
    open-files-limit = 8192
    

0

आपका विन्यास छोटी गाड़ी है।

यहाँ इस उपकरण का उपयोग करें । यह बताता है कि आपको अपने कस्टम कॉन्फ़िगरेशन के लिए कितनी मेमोरी रैम की आवश्यकता है?

आपका वर्तमान रैम जैसा कि आपने उल्लेख किया है, 12GBलेकिन आपको 31.6GB500 सक्रिय MySQL कनेक्शन की आवश्यकता है।

Session variables
max_allowed_packet 16.0 MB
sort_buffer_size 8.0 MB
net_buffer_length 16.0 KB
thread_stack 192.0 KB
read_rnd_buffer_size 16.0 MB
read_buffer_size 2.0 MBSession variables
max_allowed_packet 16.0 MB
sort_buffer_size 8.0 MB
net_buffer_length 16.0 KB
thread_stack 192.0 KB
read_rnd_buffer_size 16.0 MB
read_buffer_size 2.0 MB
join_buffer_size 8.0 MB
Total (per session)50.2 MB
Global variables
innodb_log_buffer_size 1.0 MB
query_cache_size 64.0 MB
innodb_buffer_pool_size 7.0 GB
innodb_additional_mem_pool_size 16.0 MB
key_buffer_size 32.0 MB
Total 7.1 GB
Total memory needed (for 500 connections): 31.6 GB
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.