我正在运行带有 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