MySQL master'larımızdan birinde, OOM Killer çağrıldı ve büyük kesintiye yol açan MySQL sunucusunu öldürdü. Çekirdek günlüğü aşağıdadır:
[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
Bu makinede 64GB RAM var.
Mysql yapılandırma değişkenleri şunlardır:
innodb_buffer_pool_size = 48G
innodb_additional_mem_pool_size = 512M
innodb_log_buffer_size = 64M
Bazı nagios eklentileri ve metrik toplama komut dosyaları dışında, bu makinede başka hiçbir şey çalışmaz. Birisi bana OOM katilinin neden çağrıldığını ve gelecekte çağrılmasını nasıl önleyebilirim? OOM katil mysql sunucusunu öldürmemesini söyleyebilirim herhangi bir yolu var mı. oom_adj
OOM katili tarafından öldürülmesini önlemek için bir sürecin değerini çok daha düşük olarak ayarlayabileceğimizi biliyorum . Ancak bunu önlemenin başka bir yolu var mı?
48G
+512M
+ ' dan daha yüksek olacaktır64M
çünkü dikkate alınması gereken bazı ek yükler ve diğer yapılar da vardır; bunun için bir yerde bir formül vardı ama şu anda bulamıyorum. Bunun havaya uçmasına neden olup olmayacağından emin değilim64G
. Sadece emin olmakfree
için64G
, ilk etapta mevcut olduğunu doğrular ?