min_free_kbytes 设置案例问题解析-阿里云开发者社区

开发者社区> 云服务技术课堂> 正文

min_free_kbytes 设置案例问题解析

简介: LINUX tmpfs 空间使用未达到100% , 内存也未占满。 执行任何命令提示 bash: fork: Cannot allocate memory 过几秒时间系统会自动重启。

作者:枫凡

问题背景

服务器内主要运行程序 : Jadeos
问题描述 : LINUX tmpfs 空间使用未达到100% , 内存也未占满。
执行任何命令提示 bash: fork: Cannot allocate memory 过几秒时间系统会自动重启。
但在客户本地环境是没有这种情况的,即使tmpfs 使用达到100%系统未提示Cannot allocate memory
image.png

处理过程

1.首先判断客户是否内存不足导致,每次执行测试操作后,free 结果显示可用内存是有的
2.当进程Process 比较多,导致无法分配pid,也会提示Cannot allocate memory,执行命令pstree -a | wc -l 统计下进程数,排除进程数过多导致的内存无法分配
Cannot allocate memory解析

image.png
3.登录主机内部查看客户客户内部设置min_free_kbytes值为1G
即强制Linux 系统最低保留多少空闲内存(Kbytes),如果系统可用内存低于该值,默认会启用oom killer 或者强制重启
当耗尽内存直至系统最低保存内存时会有两种现象,根据内核参数vm.panic_on_oom 设置值的不同而有不同的行为
vm.panic_on_oom=0 系统会提示oom ,并启动oom-killer杀掉占用最高内存的进程
vm.panic_on_oom =1. 系统关闭oom,不会启动oom-killer,而是会自动重启
oom规则说明

image.png

解决方案

建议客户降低min_free_kbytes值
更改减小min_free_kbytes后,再执行更多次的拷贝,最后一次free 可用内存显示解决到设置值是,才提示内存不足
这个是符合linux 系统对内存管理的预期的

版权声明:如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:developerteam@list.alibaba-inc.com 进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:

云服务技术课堂,各类技术课程、最佳实践输出,来好好听课吧!

官方博客