实例内存未耗尽时触发 Out Of Memory

煎鱼 2020年3月19日16:42:00
评论
88,034 785字阅读2分37秒

现象描述

Linux 云服务器在内存使用率未占满的情况下触发了 OOM(Out Of Memory)。如下图所示:

实例内存未耗尽时触发 Out Of Memory

可能原因

可能是由系统可用内存低于 min_free_kbytes 值导致。min_free_kbytes 值表示强制 Linux 系统最低保留的空闲内存(Kbytes),如果系统可用内存低于设定的 min_free_kbytes 值,则默认系统启动 oom-killer 或强制重启。具体行为由内核参数 vm.panic_on_oom 值决定:

  • 若 vm.panic_on_oom=0,则系统会提示 OOM,并启动 oom-killer 杀掉占用最高内存的进程。
  • 若 vm.panic_on_oom =1,则系统会自动重启。

解决思路

1、参考 处理步骤 进行排查,查看实例内存使用率是否过高及总线程数是否受限。

2、核实 min_free_kbytes 值设置,并修改为正确配置。

处理步骤

1、参考 内存使用率过高问题处理 ,查看实例是否内存使用率过高。若实例内存使用率正常,则执行下一步。

2、参考 日志报错 fork:Cannot allocate memory,核实线程数是否超限。若总线程数未超限,则执行下一步。

3、登录云服务器,执行以下命令查看 min_free_kbytes 值。

sysctl -a | grep min_free

min_free_kbytes 值单位为 kbytes,下图所示 min_free_kbytes = 1024000 即为1GB。

实例内存未耗尽时触发 Out Of Memory

4、执行以下命令,使用 VIM 编辑器打开 /etc/sysctl.conf 配置文件。

vim /etc/sysctl.conf

5、按 i 进入编辑模式,修改 vm.min_free_kbytes 配置项。

说明:建议修改 vm.min_free_kbytes 值为不超过总内存的1%即可。

6、按 Esc 并输入 :wq 后,按 Enter 保存并退出 VIM 编辑器。

7、执行以下命令,使配置生效即可。

sysctl -p
煎鱼
  • 本文由 发表于 2020年3月19日16:42:00
  • 除非特殊声明,本站文章均为原创,转载请务必保留本文链接
VNC 登录报错 Cannot allocate memory 脚本编程

VNC 登录报错 Cannot allocate memory

现象描述 使用 VNC 登录云服务器时,无法正常进入系统,且出现 “Cannot allocate memory” 报错信息。如下图所示: 可能原因 可能是系统中存在多个大页内存导致。一个大页内存默认...
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: