mongod убит OOM kill: «Недостаточно памяти в группе памяти: убить процесс 20391 (mongod) набрать 993 балла или пожертвовать ребенком»

mongod убит OOM kill: «Memory cgroup out of memory» Машина имеет 32 ГБ ОЗУ, но OOM убивает процесс mongod, когда он использует 7 ГБ ОЗУ.

      [11988.010379] Memory cgroup out of memory: Kill process 16392 (mongod) score 994 or sacrifice child
[11988.022403] Killed process 16392 (mongod) total-vm:9016932kB, anon-rss:7284224kB, file-rss:0kB, shmem-rss:0kB
[11988.319261] oom_reaper: reaped process 16392 (mongod), now anon-rss:4kB, file-rss:0kB, shmem-rss:0kB
[15015.365245] conn2096 invoked oom-killer: gfp_mask=0x14000c0(GFP_KERNEL), nodemask=(null),  order=0, oom_score_adj=0
[15015.379050] conn2096 cpuset=/ mems_allowed=0
[15015.385647] CPU: 3 PID: 15357 Comm: conn2096 Not tainted 4.14.285-147.501.amzn1.x86_64 #1
[15015.397908] Hardware name: Xen HVM domU, BIOS 4.11.amazon 08/24/2006
[15015.407529] Call Trace:
[15015.411779]  dump_stack+0x66/0x81
[15015.417104]  dump_header+0x94/0x21a
[15015.422586]  oom_kill_process+0x223/0x410
[15015.428918]  out_of_memory+0x102/0x4c0
[15015.434991]  mem_cgroup_out_of_memory+0x3b/0x60
[15015.442077]  mem_cgroup_oom_synchronize+0x2d8/0x310
[15015.449609]  ? mem_cgroup_css_reset+0xd0/0xd0
[15015.456520]  pagefault_out_of_memory+0xf/0x60
[15015.463452]  __do_page_fault+0x4ae/0x4c0
[15015.469099]  ? page_fault+0x2f/0x50
[15015.472734]  page_fault+0x45/0x50
[15015.476267] RIP: 4420b8a8:0x5627db743000
[15015.480385] RSP: 0000:00007f197f53d6d0 EFLAGS: 00489d23
[15015.480411] Task in /mongod killed as a result of limit of /mongod
[15015.491635] memory: usage 7340032kB, limit 7340032kB, failcnt 2404739
[15015.497460] memory+swap: usage 7340028kB, limit 9007199254740988kB, failcnt 0
[15015.503577] kmem: usage 38324kB, limit 9007199254740988kB, failcnt 0
[15015.515250] Memory cgroup stats for /mongod: cache:488KB rss:7300704KB rss_huge:0KB shmem:0KB mapped_file:264KB dirty:0KB writeback:0KB swap:0KB inactive_anon:0KB active_anon:7301024KB inactive_file:456KB active_file:52KB unevictable:4KB
[15015.543894] [ pid ]   uid  tgid total_vm      rss nr_ptes nr_pmds swapents oom_score_adj name
[15015.555451] [ 3991]   498  3991  2281830  1826804    3980      11        0             0 mongod

1 ответ

Решение: Измените ограничение cgroup на 50% памяти компьютера (ОЗУ).

Длинная история:

У меня было предположение:

Ограничение Cgroup VS ограничение mongo вызывает эту проблему:

  1. ограничение cgroup составляет 7 ГБ (по умолчанию на машине)
  2. Ограничение Mongo: (total_mem/2 -1) = (32/2 -1) = 15 ГБ, см. https://www.mongodb.com/docs/manual/administration/production-notes/
  3. mongo пытается использовать до 15 ГБ, но linux убивает его на 7 ГБ из-за ограничения cgroup

См. ограничение cgroup с помощью команды:cat /etc/cgconfig.conf

      mount {
    cpuset  = /cgroup/cpuset;
    cpu     = /cgroup/cpu;
    cpuacct = /cgroup/cpuacct;
    memory  = /cgroup/memory;
    devices = /cgroup/devices;
  }

  group mongod {
    perm {
      admin {
        uid = mongod;
        gid = mongod;
      }
      task {
        uid = mongod;
        gid = mongod;
      }
    }
    memory {
      memory.limit_in_bytes = 7G;
      }
  }

Чтобы решить эту проблему, отредактируйте ограничение cgroup на 50% машинной памяти (ОЗУ).

Чтобы изменить ограничение cgroup, перейдите по ссылке ниже (2. Память mongodb и cgroups)

Полезные ссылки:

  1. Как монго использует память:https://www.alibabacloud.com/blog/how-does-mongodb-consume-and-use-memory_594704
  2. Память mongodb и контрольные группы:https://vikoky.medium.com/limit-mongodb-memory-usage-using-cgroup-on-linux-a71a1888ef1c
Другие вопросы по тегам