现象描述
Linux 云服务器在内存使用率未占满的情况下触发了 OOM(Out Of Memory)。如下图所示:
可能原因
可能原因 | 处理措施 |
内存使用率过高 | 检查内存使用率是否过高 |
进程数超限 | 检查进程数是否超限 |
系统可用内存低于 min_free_kbytes 值 | 检查系统可用内存是否低于 min_free_kbytes 值 |
故障处理
检查内存使用率是否过高
参见 内存使用率过高问题处理 ,查看实例是否内存使用率过高。若实例内存使用率正常,请 检查进程数是否超限。
检查进程数是否超限
1. 参见 日志报错 fork:Cannot allocate memory,核实进程数是否超限。若总进程数未超限,则执行下一步。2. 登录云服务器,执行以下命令查看 min_free_kbytes
值。
sysctl -a | grep min_free
min_free_kbytes
值单位为 kbytes,下图所示 min_free_kbytes = 1024000
即为1GB。
3. 执行以下命令,使用 VIM 编辑器打开 /etc/sysctl.conf
配置文件。
vim /etc/sysctl.conf
4. 按 i 进入编辑模式,修改 vm.min_free_kbytes
配置项。若该配置项不存在,则直接在配置文件中增加即可。说明建议修改 vm.min_free_kbytes
值为不超过总内存的1%即可。5. 按 Esc 并输入 :wq 后,按 Enter 保存并退出 VIM 编辑器。6. 执行以下命令,使配置生效即可。
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
,则系统会自动重启。
对腾讯云CVM服务器有疑惑?想了解产品收费? 联系解决方案专家
腾讯云限时活动1折起,即将结束: 马上收藏
同尘科技为腾讯云授权服务中心,购买腾讯云享受折上折,更有现金返利:同意关联,立享优惠
阿里云解决方案也看看?: 点击对比阿里云的解决方案
本文来自投稿,不代表新手站长_郑州云淘科技有限公司立场,如若转载,请注明出处:https://www.cnzhanzhang.com/17375.html