हमारे एक MySQL मास्टर पर, OOM किलर ने आक्रमण किया और MySQL सर्वर को मार दिया, जिससे बड़े आउटेज हो गए। निम्नलिखित कर्नेल लॉग है:
[2006013.230723] mysqld invoked oom-killer: gfp_mask=0x201da, order=0, oom_adj=0
[2006013.230733] Pid: 1319, comm: mysqld Tainted: P 2.6.32-5-amd64 #1
[2006013.230735] Call Trace:
[2006013.230744] [<ffffffff810b6708>] ? oom_kill_process+0x7f/0x23f
[2006013.230750] [<ffffffff8106bde2>] ? timekeeping_get_ns+0xe/0x2e
[2006013.230754] [<ffffffff810b6c2c>] ? __out_of_memory+0x12a/0x141
[2006013.230757] [<ffffffff810b6d83>] ? out_of_memory+0x140/0x172
[2006013.230762] [<ffffffff810baae8>] ? __alloc_pages_nodemask+0x4ec/0x5fc
[2006013.230768] [<ffffffff812fca02>] ? io_schedule+0x93/0xb7
[2006013.230773] [<ffffffff810bc051>] ? __do_page_cache_readahead+0x9b/0x1b4
[2006013.230778] [<ffffffff810652f8>] ? wake_bit_function+0x0/0x23
[2006013.230782] [<ffffffff810bc186>] ? ra_submit+0x1c/0x20
[2006013.230785] [<ffffffff810b4e53>] ? filemap_fault+0x17d/0x2f6
[2006013.230790] [<ffffffff810cae1e>] ? __do_fault+0x54/0x3c3
[2006013.230794] [<ffffffff812fce29>] ? __wait_on_bit_lock+0x76/0x84
[2006013.230798] [<ffffffff810cd172>] ? handle_mm_fault+0x3b8/0x80f
[2006013.230803] [<ffffffff8103a9a0>] ? pick_next_task+0x21/0x3c
[2006013.230808] [<ffffffff810168ba>] ? sched_clock+0x5/0x8
[2006013.230813] [<ffffffff81300186>] ? do_page_fault+0x2e0/0x2fc
[2006013.230817] [<ffffffff812fe025>] ? page_fault+0x25/0x30
इस मशीन में 64GB रैम है।
निम्नलिखित mysql config चर हैं:
innodb_buffer_pool_size = 48G
innodb_additional_mem_pool_size = 512M
innodb_log_buffer_size = 64M
कुछ नैगियोस प्लगइन्स और मीट्रिक संग्रह स्क्रिप्ट को छोड़कर, इस मशीन पर कुछ और नहीं चलता है। क्या कोई मुझे यह पता लगाने में मदद कर सकता है कि ओओएम हत्यारे को क्यों मिला और भविष्य में इसे कैसे रोका जा सकता है। क्या कोई ऐसा तरीका है जिससे मैं OOM हत्यारे को mysql सर्वर को नहीं मार सकता। मुझे पता है कि हम oom_adj
OOM हत्यारे को मारने से रोकने के लिए एक प्रक्रिया के लिए बहुत कम मूल्य निर्धारित कर सकते हैं । लेकिन क्या इससे बचाव का कोई और तरीका है।
48G
+512M
+64M
भी है क्योंकि वहाँ कुछ भूमि के ऊपर और अन्य संरचनाओं पर विचार करने के लिए; इसके लिए कहीं न कहीं एक फॉर्मूला था लेकिन मैं इसे अभी खोज नहीं सकता। यकीन नहीं है कि अगर यह इसे उड़ाने का कारण होगा64G
। हालांकि, यह सुनिश्चित करने के लिए कि पहली जगह में उपलब्ध हैं कीfree
पुष्टि करता64G
है?