MySQL 마스터 중 하나에서 OOM Killer가 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 RAM이 있습니다.
다음은 mysql 구성 변수입니다.
innodb_buffer_pool_size = 48G
innodb_additional_mem_pool_size = 512M
innodb_log_buffer_size = 64M
일부 nagios 플러그인 및 메트릭 수집 스크립트를 제외하고이 시스템에서 다른 것은 실행되지 않습니다. 누군가 OOM killer가 호출 된 이유와 나중에 호출되는 것을 방지 할 수있는 방법을 알려줄 수 있습니까? OOM 킬러에게 mysql 서버를 죽이지 말라고 말할 수있는 방법이 있습니까? oom_adj
프로세스가 OOM 킬러에 의해 죽지 않도록 프로세스에 대해 값을 매우 작게 설정할 수 있다는 것을 알고 있습니다 . 그러나 이것을 방지하는 다른 방법이 있습니까?
48G
+512M
+ 보다 높습니다64M
. 어딘가에 대한 수식이 있었지만 지금은 찾을 수 없습니다. 이것이 원인이 될지 확실하지 않습니다64G
. 그래도free
확인하기64G
위해 처음부터 사용할 수 있는지 확인하십시오 .