查看进程是否是由于linux OOM killer机制杀死的方法
问题
如果进程突然被杀死没有应用日志,而且进程占用内存过高,考虑是否是由于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机制杀死的方法相关推荐
- linux内核oom,linux OOM killer分析
基本概念 Linux 内核有个机制叫OOM killer(Out-Of-Memory killer),该机制会监控那些占用内存过大,尤其是瞬间很快消耗大量内存的进程,为了防止内存耗尽而内核会把该进程杀 ...
- Linux内核OOM killer机制
程序运行了一段时间,有个进程挂掉了,正常情况下进程不会主动挂掉,简单分析后认为可能是运行时某段时间内存占用过大,系统内存不足导致触发了Linux操作系统OOM killer机制,将运行中的进程杀掉了. ...
- linux下查看进程的线程数,linux查看进程的线程数
top -H -p $PID #查看对应进程的那个线程占用CPU过高 1.top -H 手册中说:-H : Threads toggle 加上这个选项启动top,top一行显示一个线程.否则,它一行 ...
- linux进程莫名其妙被kill,Linux进程突然被杀掉(OOM killer),查看系统日志
Linux进程被杀掉(OOM killer),查看系统日志 基本概念: Linux 内核有个机制叫OOM killer(Out Of Memory killer),该机制会监控那些占用内存过大,尤其是 ...
- linux进程被杀掉日志,Linux进程突然被杀掉(OOM killer),查看系统日志
Linux进程被杀掉(OOM killer),查看系统日志 基本概念: Linux 内核有个机制叫OOM killer(Out Of Memory killer),该机制会监控那些占用内存过大,尤其是 ...
- (转载)Linux OOM Killer个人总结
Linux下面有个特性叫OOM killer(Out Of Memory killer),这个东西会在系统内存耗尽的情况下跳出来,选择性的干掉一些进程以求释放一些内存.典型的情况是:某天机器突然登不上 ...
- linux内核killler,Linux 的 OOM Killer 机制分析
按需分配物理页面 很多情况下,一个进程会申请一块很大的内存,但只是用到其中的一小部分.为了避免内存的浪费,在分配页面时,Linux 采用的是按需分配物理页面的方式.譬如说,某个进程调用malloc() ...
- 服务器上tomcat进程突然终止问题排查 - OOM Killer
服务器上tomcat进程突然终止问题排查 1)检查是否shell进程终止导致tomcat终止(排除) 由于使用./catalina.sh start启动tomcat,启动后tomcat的父PID为1, ...
- linux查看进程运行日志文件,【Linux】常用指令、ps查看进程、kill杀进程、启动停止tomcat命令、查看日志、查看端口、find查找文件...
1.说出 10 个 linux 常用的指令 1) ls 查看目录中的文件 2)cd /home 进入 '/ home' 目录:cd .. 返回上一级目录:cd ../.. 返回上两级目录 3)mkdi ...
- 红帽linux杀进程,weblogic进程无故被kill,redhat oom killer机制
./startWebLogic.sh: line 74: 30374 已杀死 ${JAVA_HOME}/bin/java ${JAVA_VM} ${MEM_ARGS} ${JAVA_OPTIONS} ...
最新文章
- ZendFramework的介绍、安装和实例运行
- 腾讯云 短信服务 【学习记录 】
- 有别于BATJ,滴滴的中台数据体系建设怎么另辟蹊径?
- redis 读取mysql数据类型_认识Redis与Redis的数据类型
- Java8 Lambda 表达式
- 导入第三方组件_大型 web 应用公共组件架构是如何来的?
- python2.7虚拟环境virtualenv安装及使用
- 讨论了好久的问题,IE、Firefox下CSS图片垂直居中的问题
- 第1章 ssh命令和SSH服务详解
- 这所985大学决定:404名硕博研究生,退学处理!
- .net byte转java byte_「Java知识收集整理」Java语法的基础
- 导航和路径规划-论文心得
- 进入加密的QQ空间方法
- 【Keras】Keras中fit_generator的使用,及fit、fit_generator、和train_on_batch的区别
- 人机共生?马斯克的疯狂“实验”还很遥远
- 绕过CDN获取服务器真实IP地址
- vux scroller在iOS13上,一停止滑动就跳到顶部
- Assertion断言的使用
- [VB.NET]浅谈MDI窗体的多窗体编程
- HTTP和HTTP的区别
热门文章
- Unity - Timeline 之 Nesting Timeline instances(嵌套的Timeline实例)
- 360校招笔试题(C++小明买菜)
- 行业分析报告|项目货运物流市场现状及未来发展趋势
- vue 中的 attribute 和 property
- 十三年来,淘宝走过的大数据之路
- win10计算机本地组策略编辑器,win10本地组策略编辑器找不到怎么办_win10电脑没有gpedit.msc的解决办法...
- pzh-web前端学习汇总-大二
- 计算机空间不足是咋回事,我的电脑最近总显示C:盘空间不足,请问这是咋回事,如何解决??谢谢...
- 【历史上的今天】6 月 3 日:微软推出必应搜索引擎;Larry Roberts 启动阿帕网;Visual Basic 之父出生
- 《高效能人士的七个习惯》阅读笔记