Sur l'un de nos maîtres MySQL, OOM Killer a été invoqué et tué le serveur MySQL, ce qui a entraîné une panne importante. Voici le journal du noyau:
[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
Cette machine a 64 Go de RAM.
Voici les variables de configuration mysql:
innodb_buffer_pool_size = 48G
innodb_additional_mem_pool_size = 512M
innodb_log_buffer_size = 64M
À l'exception de certains plugins nagios et scripts de collecte de mesures, rien d'autre ne s'exécute sur cette machine. Quelqu'un peut-il m'aider à savoir pourquoi le tueur OOM a été invoqué et comment puis-je l'empêcher d'être invoqué à l'avenir? Existe-t-il un moyen de dire au tueur OOM de ne pas tuer le serveur mysql. Je sais que nous pouvons définir une oom_adjvaleur très inférieure pour un processus afin d'éviter qu'il ne soit tué par le tueur OOM. Mais existe-t-il un autre moyen d'empêcher cela?
48G+512M+64Mcar il y a aussi des frais généraux et d'autres structures à considérer; il y avait une formule pour cela quelque part, mais je ne la trouve pas pour le moment. Je ne sais pas si cela le ferait exploser64G. Juste pour vous assurer,freeconfirme que les64Gsont disponibles en premier lieu?