首页 帮助中心 新加坡服务器 linux实例内存未耗尽时触发OOM
linux实例内存未耗尽时触发OOM
时间 : 2024-10-23 10:45:19 编辑 : 华纳云 阅读量 : 96

linux云服务器内存使用率还没占满时,触发了Out Of Memory,可能原因有哪些?如何解决?

这种情况可能是因为内存占用过高、进程数超限、系统可用内存低于 min_free_kbytes 值等。先逐一排除再来找出实际解决方法。

先检查是否存在内存使用率过高。执行以下命令看共享内存是否使用过高:

cat /proc/meminfo | grep -i shmem

查看不可回收的slab内存占用情况:

cat /proc/meminfo | grep -i SUnreclaim

查找是否存在内存大页:

cat /proc/meminfo | grep -iE "HugePages_Total|Hugepagesize"

如果HugePages_Total 输出非0,表示配置了内存大页。内存大页的大小为 HugePages_Total*Hugepagesize, 您需确认 hugepage 是否为其他恶意程序配置。若确认已不需要内存大页,可通过注释 /etc/sysctl.conf 文件中的 vm.nr_hugepage 配置项,再执行 sysctl -p 命令取消内存大页。

如果通过上述检查发现内存使用率正常,继续检查进程数是否超限。

sysctl -a | grep min_free

min_free_kbytes 值单位为 kbytes,如min_free_kbytes = 1024000 即为1GB。

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

vim /etc/sysctl.conf

按i进入编辑模式,修改 vm.min_free_kbytes 配置项。若该配置项不存在,则直接在配置文件中增加即可(建议修改 vm.min_free_kbytes 值为不超过总内存的1%)。

按Esc并输入:wq,按Enter保存并推出VM编辑器。执行以下命令,使配置生效:

sysctl -p

min_free_kbytes 值表示强制linux系统最低保留的空间内存,查询linux系统是否存在低于min_free_kbytes 值,如果存在这样情况则系统默认启动oom-killer或强制重启。具体情况由内核参数vm.panic_on_oom 值决定:

如果vm.panic_on_oom=0,

则系统会提示 OOM,并启动 oom-killer 杀掉占用最高内存的进程。

反之,vm.panic_on_oom =1,

则系统会自动重启。华纳云提供带宽、磁盘等使用情况监控服务,登录官网个人管理后台即可使用。

华纳云 推荐文章
Watsonx On-PremiseS的核心组件有哪些 SMTP常用端口号和安全维护方法 网站构建之如何用SQL管理数据 使用手机连接和控制远程服务器用哪些软件 tcpdump 分析特定类型网络流量过程及高级过滤选项分享 数据库常见错误及具体解决办法 Linux中出现yum命令使用失败 SparkR的工作原理和应用分享 Apache Flink实时数据处理框架及应用 PostgreSQL 的public权限管理意义和注意事项
客服咨询
7*24小时技术支持
技术支持
渠道支持