zoukankan      html  css  js  c++  java
  • java进程被OOM干掉问题记录

    异常现象:用户环境部署了一台iserver,访问一阵后,进程没了
     
    分析:
    1、bin目录下没有崩溃日志,在tomcat的访问日志里面也没有看到有用的信息。iserver.log里面也没有信息
    2、怀疑是不是机器重启导致:执行last,看到机器运行200多小时,说明没人重启
    3、查看linux系统日志 /var/log/messages,果然看到java进程被kill掉的信息
    原因:查了下,OOM_killer是Linux自我保护的方式,当内存不足时不至于出现太严重问题,有点壮士断腕的意味
    在kernel 2.6,内存不足将唤醒oom_killer,挑出/proc/<pid>/oom_score最大者并将之kill掉
     
    为了保护重要进程不被oom-killer掉,我们可以:echo -17 > /proc/<pid>/oom_adj,-17表示禁用OOM
    我们也可以对把整个系统的OOM给禁用掉:
    sysctl -w vm.panic_on_oom=1 (默认为0,表示开启)
    sysctl -p
     
    参数/proc/sys/vm/overcommit_memory可以控制进程对内存过量使用的应对策略
    当overcommit_memory=0 允许进程轻微过量使用内存,但对于大量过载请求则不允许(默认)
    当overcommit_memory=1 永远允许进程overcommit
    当overcommit_memory=2 永远禁止overcommit
     
    进展:先禁用了OOM,保证iserver不会挂掉。后续写一个监控脚本,进程被干掉以后,自动重启啦
     
  • 相关阅读:
    杭电2031进制转换
    杭电2033人见人爱A+B
    【转】到底怎么样才叫看书?
    方便单个实体更新的DbContext扩展方法,比如Edit页面
    使用Newtonsoft.Json
    代码配置 vs. 配置文件
    进程到创建
    C#+VBA 操作EXCEL(转)
    基于定位的社交应用Foursquare开源网址(wp7)
    深入理解计算机系统实验
  • 原文地址:https://www.cnblogs.com/yaohuimo/p/11989916.html
Copyright © 2011-2022 走看看