Out of memory: Kill process 10660 (java) score 685 or sacrifice child

系统为:CentOS release 6.8 (Final),内核:2.6.32-642.13.1.el6.x86_64,内存:8G,有时候系统会自动kill掉进程,日志提示:Out of memory: Kill process 10660 (java) score 685 or sacrifice child,网上百度的没能解决问题,还望各位大神指点,谢谢!(而且适用的系统是rhel 4)

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/nf 中加入设置,以便启动就生效:

  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

0同行回答

“答”则兼济天下,请您为题主分忧!

提问者

feiyue9660
系统工程师辅辰科技

问题来自

相关问题

相关资料

相关文章

问题状态

  • 发布时间:2017-02-17
  • 关注会员:1 人
  • 问题浏览:9896
  • X社区推广