tencent cloud

$0 14-Day TrialExperience EdgeOne for acceleration and security protection!

文档反馈

云服务器
文档云服务器故障处理Linux 实例内存相关故障实例内存未耗尽时触发 Out Of Memory
文档云服务器故障处理Linux 实例内存相关故障实例内存未耗尽时触发 Out Of Memory

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

最后更新时间:2024-01-06 17:32:18

现象描述

Linux 云服务器在内存使用率未占满的情况下触发了 OOM(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。


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


产品类别

文档章节

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

联系我们

联系我们,为您的业务提供专属服务。

技术支持

如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

7x24 电话支持
中国香港
+852 800 906 020 (免费)
美国
+1 844 606 0804 (免费)
英国
+44 808 196 4551 (免费)
加拿大
+1 888 605 7930 (免费)
澳大利亚
+61 1300 986 386 (免费)
EdgeOne 热线
+852 300 80699
更多本地服务热线陆续新增中