前段时间,公司同事遇到这样的问题,A系统通过RPC调用B系统,调用之前会在本地落单据,与RPC是在同一事务中。后来出现A应用挂掉,引发的问题是发现B返回给A系统,找不到相关流水,最后发现是linux在内存吃紧的情况下,会杀掉占用最大的进程,导致了数据库事务的回滚,但是RPC调用成功了,这是一个容易疏忽的不一致点。
Linux OOM-killer
前天线上出了个502错误,经排查是某开发人员写了条性感的程序吃掉了大部分内存,触发OOM-killer杀死Nginx
查看日志/var/log/messages发现类似"Out of Memory: Kill process..."错误
以前不了解OOM-killer{out of memory killer },今天碰巧放假一天,借此学习下,涨涨姿势!
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
sysctl -p
值得注意的是,有些时候 free -m 时还有剩余内存,但还是会触发OOM-killer,可能是因为进程占用了特殊内存地址
平时我们应该留意下新进来的进程内存使用量,免得系统重要的业务进程被无辜牵连
可用 top M 查看最消耗内存的进程,但也不是进程一超过就会触发oom_killer
参数/proc/sys/vm/overcommit_memory可以控制进程对内存过量使用的应对策略
当overcommit_memory=0 允许进程轻微过量使用内存,但对于大量过载请求则不允许
当overcommit_memory=1 永远允许进程overcommit
当overcommit_memory=2 永远禁止overcommit
相关推荐
Linux系统的OOM Killer处理机制.docx
NULL 博文链接:https://shuechaolau.iteye.com/blog/1558046
前面一节重点分享了Linux的内存分配策略,基于上述的分配策略,为了规避超售的风险,Linux采了一种OOM Killer的机制,即系统可用内存(包括Swap)即将使用完之前,选择性的Kill掉一些进程以求释放一些内存
heart_oom_protect 一个Erlang OTP库,可保护心脏免于被Linux内核的OOM Killer杀死 建造 $ rebar3 compile
android 11源码中如何提高应用oom_adj级别,保活应用(csdn)————程序
随着应用打开数量的增多,系统已使用的内存越来越大,就很有可能导致系统内存不足, 那么需要一个能管理所有进程,根据一定策略来释放进程的策略,这便有了lmk,全称为LowMemoryKiller(低内存杀手),lmkd来决定什么...
问题原因分析:使用ScriptEngine.eval每次都会对脚本进行编译,生成一个新的类,被GroovyClassLoader加载,大量执行计算后,将导致被加载的类数量不断增加,最终OOM。 解决办法:对计算的表达式expression进行预...
大部分情况下,会杀掉导致OOM的进程,然后系统恢复。通常我们会添加对内存的监控报警,例如:当memory或swap使用超过90%时,触发报警通知,需要及时介入排查。 如果已经出现OOM,则可以通过dmesg命令查看,CentOS7...
Mar 9 11:29:16 xxxxxx kernel: mysqld invoked oom-killer: gfp_mask=0x201da, order=0, oom_adj=0, oom_score_adj=0 Mar 9 11:29:16 xxxxxx kernel: mysqld cpuset=/ mems_allowed=0 Mar 9 11:29:16 x
现在是早晨6点钟。已经醒来的我正在总结到底是什么事情使得我的起床闹铃提前了这么多。故事刚开始的时候,手机铃声恰好停止。... 我们部署的监控系统发现进程已经挂掉了并重启了服务。由于现在咖啡因已经流淌在我的血
earlyoom-早期的OOM守护程序 oom-killer通常在Linux用户中享有... 默认情况下,如果两者都低于10%,它将杀死最大的进程(最高的oom_score )。 百分比值可通过命令行参数配置。 在下面的free -m输出中,可用内存为
SurfaceView加载动画 解决OOM问题 多少帧都没问题 不会卡顿 不会卡顿
这个demo解决了由于大量使用大图片,导致极度不流畅,甚至OOM。使用了二次裁剪,进行图片压缩,减小内存的使用
proc <pid> oom_adj set to -17 protects the oom killer for legacy purposes.
图片oom,解决方法 图片oom,完美deom
OOM分析工具-MemoryAnalyzer JVM dump分析利器
安卓 OOM内存
比如:这句话是在oom_kill_process()->dump_header()函数里打印出来的,告诉你那个进程触发的这次oom killer,这里显示是in