Openstack nova 使用 oom_kill 终止客户虚拟机

Openstack nova 使用 oom_kill 终止客户虚拟机

我正在运行带有 Kolla ansible 部署的 openstack Victoria,所有组件都是容器化的。

当内存达到最大值时,计算节点 (oom_kill) 会终止客户机,有没有办法避免这种情况,就像在其他虚拟机管理程序中一样,它工作正常,没有这个问题。我使用的是 Centos 8.3。如果有办法避免这种情况,请告诉我。

错误:

**Feb 27 12:18:15 server1 kernel: neutron-openvsw invoked oom-killer: gfp_mask=0x6200ca(GFP_HIGHUSER_MOVABLE), order=0, oom_score_adj=0
Feb 27 12:18:15 server1 kernel: oom_kill_process.cold.28+0xb/0x10
Feb 27 12:18:15 server1 kernel: [ pid ]   uid  tgid total_vm      rss pgtables_bytes swapents oom_score_adj name
Feb 27 12:18:15 server1 kernel: oom-kill:constraint=CONSTRAINT_NONE,nodemask=(null),cpuset=395bde13c7e0570ef36df008bc028d8701fd76c1b56e2a56afaf254fd53d0043,mems_allowed=0-1,global_oom,task_memcg=/machine/qemu-33-instance-000000dc.libvirt-qemu,task=qemu-kvm,pid=2301214,uid=42436
Feb 27 12:18:17 server1 kernel: oom_reaper: reaped process 2301214 (qemu-kvm), now anon-rss:0kB, file-rss:516kB, shmem-rss:0kB**

sar 内存利用率

==================================
10:10:05 AM kbmemfree   kbavail kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit  kbactive   kbinact   kbdirty
12:00:05 PM    877228         0 393690660     99.78         0    500284 2254123104    542.46 374227828  12705256         0
12:10:04 PM    866416         0 393701472     99.78         0    501844 2254259520    542.49 374233440  12704360         0
12:20:04 PM 301182096 300028052  93385792     23.67         0    705140 1938778932    466.57  83794716   5028804         8
12:30:04 PM 301085624 299970968  93482264     23.69         0    779220 1939000988    

答案1

当我找到解决方案时,我回答了我自己的问题。

即便空闲状态看起来很好,比如 256G RAM 只使用了 140G,还有大约 100G 显示为空闲,也会发生 oom kill 。

[root@serverxx ~]# free -g 总计 已用 空闲 共享 buff/cache 可用 内存:251 140 108 0 2 108 交换:19 6 13

oom kill 是由 sar 统计数据中的高 %commit 触发的,此时内核开始针对高内存占用的实例进行释放。

为了避免内存占用较高的客户机实例发生 oom kill,我设置了以下内容。vm.oom_kill_allocating_task=1

当我执行 sar -r 时,%commit 远高于系统可以分配的数额,并且我从 ps 中发现它是一个 cinder-backup 容器,它是从 kolla-ansible 部署默认创建的,但尚未配置。

我没有配置 Cinder 备份服务统计信息,它只是在运行,事实证明,未配置的容器超时占用了所有内存,正如从 vsz 中的 ps 命令的输出中看到的那样。

ps -eo args,comm,pid,ppid,rss,vsz --sort vsz 列

VSZ 极高

命令 命令 PID PPID RSS VSZ /usr/libexec/qemu-kvm -name qemu-kvm 1916998 47324 8094744 13747664 /var/lib/kolla/venv/bin/pyt cinder-backup 43689 43544 170999912870274784

在备份容器停止后,Sar 统计的 % commit 恢复正常,现在一切恢复正常。%commit 突出显示自1083.46 至 14.21改变之后。

下午 02:00:37 kbmemfree kbavail kbmemused %memused kbbuffers kbcached kbcommit %commit kbactive kbinact kbdirty 下午 03:00:37 48843576 49998184 82890508 62.92 9576 5949348 1427280428 1083.46 75646888 2797388 324 下午 03:10:37 48829248 49991284 82904836 62.93 9576 5956544 1427343664 1083.50 75653556 2804592 116 下午 03:20:22 120198612 121445516 11535472 8.76 9576 6042892 18733688 14.22 4887688 2854704 80 下午 03:30:37 120189464 121444176 11544620 8.76 9576 6050200 18725820 14.21 4887752 2862248 88

相关内容