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

现象描述

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

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

可能原因

可能原因处理措施
内存使用率过高检查内存使用率是否过高
进程数超限检查进程数是否超限
系统可用内存低于 min_free_kbytes 值检查系统可用内存是否低于 min_free_kbytes 值

故障处理

检查内存使用率是否过高

参见 内存使用率过高问题处理 ,查看实例是否内存使用率过高。若实例内存使用率正常,请 检查进程数是否超限

检查进程数是否超限

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

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

sysctl -a | grep min_free

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

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

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

vim /etc/sysctl.conf

i 进入编辑模式,修改 vm.min_free_kbytes 配置项。若该配置项不存在,则直接在配置文件中增加即可。

说明

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

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

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

sysctl -p

检查系统可用内存是否低于 min_free_kbytes 值

可能是由系统可用内存低于 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,则系统会自动重启。

主题测试文章,只做测试使用。发布者:云大使,转转请注明出处:https://www.xp8.net/server/4488.html

(0)
打赏 微信扫一扫 微信扫一扫
云大使的头像云大使
上一篇 2025年4月3日 下午8:40
下一篇 2025年5月19日 下午4:26

相关推荐

发表回复

登录后才能评论
联系我们

联系我们

18838889666

在线咨询: QQ交谈

邮件:xinyun@88.com

工作时间:周一至周五,9:30-18:30,节假日休息

添加微信
添加微信
分享本页
返回顶部
---------官方优惠叠加渠道折扣:通过我们购买腾讯云/阿里云,价格更低,服务更优。更有专业配置指导与服务。微信同步:18838889666----