linux出现out of memory是什么问题

如题所述

有两种方法可以解决这个问题
1、如果可能,请升级到64位系统。
这是最好的解决办法,因为所有的内存都将成为low memory。如果你在这种情况下耗尽了low memory,那就真的是out of memory了。
2、如果受限于必须使用32位系统,最好的解决办法是使用hugemem内核。
这种内核以不同的方式分割low/high memory,而且在大多数情况下会提供足够多的low memory到high memory的映射。在大多数案例中,这是一个很简单的修复方法:安装hugemem kernel RPM包,然后重启即可。
如果运行hugemem内核也不可能,你可以尝试将/proc/sys/vm/lower_zone_protection 的值设置为250甚至更多。这将让内核愿意保护low memory,从而在分配内存时多考虑从high memory分配。据我所知,此选项从2.6.x内核才开始可用。必要的是,您可能需要通过一些实验来找到您系统环境中最适合的值。可以使用下面方法快速的设置和检查改值:
# cat /proc/sys/vm/lower_zone_protection
# echo "250" > /proc/sys/vm/lower_zone_protection
在 /etc/sysctl.conf 中加入设置,以便启动就生效:
vm.lower_zone_protection = 250
作为最后的努力,你可以关闭oom-killer。这个选项可以导致系统挂起,所以请小心使用(风险自负)!
查看当前oom-killer的状态:
# cat /proc/sys/vm/oom-kill
关闭/打开oom-killer:
# echo "0" > /proc/sys/vm/oom-kill
# echo "1" > /proc/sys/vm/oom-kill
当进程该被oom-killer杀死却没有被杀死时,相关信息会记录到 /var/log/messages:
"Would have oom-killed but /proc/sys/vm/oom-kill is disabled"
温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-09-27
就是物理内存的剩余大小不足,Linux的一个自我保护措施就是当物理内存不足时,把接下来将要启动的程序kill掉,然后提示out of memory,从而防止物理内存耗尽而系统崩溃。所以当物理内存不足时,一些程序就启动不了(直接被kill掉了),解决办法是设置合适的swap内存交换空间(Linux的swap内存交换空间就相当于Windows系统的“虚拟内存”的设置),或者将不需要运行的进程用kill命令杀死从而释放内存空间,推荐还是设置swap吧。本回答被提问者采纳
第2个回答  2017-09-27
简单的就是说内存不足,看一下有哪个程序占用最大,kill掉