问题

如果进程突然被杀死没有应用日志,而且进程占用内存过高,考虑是否是由于linux OOM killer机制杀死的。

原因

linux内核有个OOM Killer机制会在内存不够分配的时候触发,选择性的杀死一些内存占用最高的进程腾出内存空间,保证系统正常运行。详细请看https://blog.csdn.net/top_explore/article/details/107733974。

确定问题

查看linux内核日志:

grep "Out of memory" /var/log/messages

如果:图片摘自https://www.cnblogs.com/duanxz/p/10185946.html

则说明是OOM killer杀死进程

解决,防止OOM Killer的方法

综上所述,知道了OOM killer的原理以及约束后,可以总结出以下几种方法来避免进程被OOM killer杀死。

1.修改Overcommit策略为1或2。(不推荐)

2.修改panic_on_oom参数为2,直接死机(不推荐)。

3.修改进程oom_adj和oom_score_adj来降低oom_score的得分,降低被OOM killer选中的几率。

 oom_adj可选值:[-17,15] -17表示禁止OOM killer

修改方式 

 echo -17 > /proc/$PID/oom_adj

oom_score_adj可选值[-1000,1000]。0表示用户不调整oom_score,负值表示要在实际打分值上减去一个折扣,正值表示要惩罚该task,也就是增加该进程的oom_score。

例如如果oom_score_adj设定-500,那么表示实际分数要打五折(基数是totalpages),也就是说该任务实际使用的内存要减去可分配的内存上限值的一半。

修改方式:

echo -500 > /proc/$PID/oom_score_adj

了解了oom_score_adj和oom_score之后,应该是尘埃落定了,oom_adj是一个旧的接口参数,其功能类似oom_score_adj,为了兼容,目前仍然保留这个参数,当操作这个参数的时候,kernel实际上是会换算成oom_score_adj,有兴趣的同学可以自行了解,这里不再细述了。

4.降低应用程序申请的内存大小,在足够使用的情况下,尽量少申请内存,内存越低得到的分数越低,越不容易被选中。

查看所有进程的oom_score排行前十的进程

#!/bin/bash
for proc in $(find /proc -maxdepth 1 -regex '/proc/[0-9]+'); doprintf "%2d %5d %s\n" \"$(cat $proc/oom_score)" \"$(basename $proc)" \"$(cat $proc/cmdline | tr '\0' ' ' | head -c 50)"
done 2>/dev/null | sort -nr | head -n 10

查看进程是否是由于linux OOM killer机制杀死的方法相关推荐

  1. linux内核oom,linux OOM killer分析

    基本概念 Linux 内核有个机制叫OOM killer(Out-Of-Memory killer),该机制会监控那些占用内存过大,尤其是瞬间很快消耗大量内存的进程,为了防止内存耗尽而内核会把该进程杀 ...

  2. Linux内核OOM killer机制

    程序运行了一段时间,有个进程挂掉了,正常情况下进程不会主动挂掉,简单分析后认为可能是运行时某段时间内存占用过大,系统内存不足导致触发了Linux操作系统OOM killer机制,将运行中的进程杀掉了. ...

  3. linux下查看进程的线程数,linux查看进程的线程数

    top -H -p $PID  #查看对应进程的那个线程占用CPU过高 1.top -H 手册中说:-H : Threads toggle 加上这个选项启动top,top一行显示一个线程.否则,它一行 ...

  4. linux进程莫名其妙被kill,Linux进程突然被杀掉(OOM killer),查看系统日志

    Linux进程被杀掉(OOM killer),查看系统日志 基本概念: Linux 内核有个机制叫OOM killer(Out Of Memory killer),该机制会监控那些占用内存过大,尤其是 ...

  5. linux进程被杀掉日志,Linux进程突然被杀掉(OOM killer),查看系统日志

    Linux进程被杀掉(OOM killer),查看系统日志 基本概念: Linux 内核有个机制叫OOM killer(Out Of Memory killer),该机制会监控那些占用内存过大,尤其是 ...

  6. (转载)Linux OOM Killer个人总结

    Linux下面有个特性叫OOM killer(Out Of Memory killer),这个东西会在系统内存耗尽的情况下跳出来,选择性的干掉一些进程以求释放一些内存.典型的情况是:某天机器突然登不上 ...

  7. linux内核killler,Linux 的 OOM Killer 机制分析

    按需分配物理页面 很多情况下,一个进程会申请一块很大的内存,但只是用到其中的一小部分.为了避免内存的浪费,在分配页面时,Linux 采用的是按需分配物理页面的方式.譬如说,某个进程调用malloc() ...

  8. 服务器上tomcat进程突然终止问题排查 - OOM Killer

    服务器上tomcat进程突然终止问题排查 1)检查是否shell进程终止导致tomcat终止(排除) 由于使用./catalina.sh start启动tomcat,启动后tomcat的父PID为1, ...

  9. linux查看进程运行日志文件,【Linux】常用指令、ps查看进程、kill杀进程、启动停止tomcat命令、查看日志、查看端口、find查找文件...

    1.说出 10 个 linux 常用的指令 1) ls 查看目录中的文件 2)cd /home 进入 '/ home' 目录:cd .. 返回上一级目录:cd ../.. 返回上两级目录 3)mkdi ...

  10. 红帽linux杀进程,weblogic进程无故被kill,redhat oom killer机制

    ./startWebLogic.sh: line 74: 30374 已杀死 ${JAVA_HOME}/bin/java ${JAVA_VM} ${MEM_ARGS} ${JAVA_OPTIONS} ...

最新文章

  1. ZendFramework的介绍、安装和实例运行
  2. 腾讯云 短信服务 【学习记录 】
  3. 有别于BATJ,滴滴的中台数据体系建设怎么另辟蹊径?
  4. redis 读取mysql数据类型_认识Redis与Redis的数据类型
  5. Java8 Lambda 表达式
  6. 导入第三方组件_大型 web 应用公共组件架构是如何来的?
  7. python2.7虚拟环境virtualenv安装及使用
  8. 讨论了好久的问题,IE、Firefox下CSS图片垂直居中的问题
  9. 第1章 ssh命令和SSH服务详解
  10. 这所985大学决定:404名硕博研究生,退学处理!
  11. .net byte转java byte_「Java知识收集整理」Java语法的基础
  12. 导航和路径规划-论文心得
  13. 进入加密的QQ空间方法
  14. 【Keras】Keras中fit_generator的使用,及fit、fit_generator、和train_on_batch的区别
  15. 人机共生?马斯克的疯狂“实验”还很遥远
  16. 绕过CDN获取服务器真实IP地址
  17. vux scroller在iOS13上,一停止滑动就跳到顶部
  18. Assertion断言的使用
  19. [VB.NET]浅谈MDI窗体的多窗体编程
  20. HTTP和HTTP的区别

热门文章

  1. Unity - Timeline 之 Nesting Timeline instances(嵌套的Timeline实例)
  2. 360校招笔试题(C++小明买菜)
  3. 行业分析报告|项目货运物流市场现状及未来发展趋势
  4. vue 中的 attribute 和 property
  5. 十三年来,淘宝走过的大数据之路
  6. win10计算机本地组策略编辑器,win10本地组策略编辑器找不到怎么办_win10电脑没有gpedit.msc的解决办法...
  7. pzh-web前端学习汇总-大二
  8. 计算机空间不足是咋回事,我的电脑最近总显示C:盘空间不足,请问这是咋回事,如何解决??谢谢...
  9. 【历史上的今天】6 月 3 日:微软推出必应搜索引擎;Larry Roberts 启动阿帕网;Visual Basic 之父出生
  10. 《高效能人士的七个习惯》阅读笔记