公司部分项目是用python实现的,由于python的内存泄露问题,每两天凌晨均会重启一次python服务,有一次在业务高峰期,python服务的内存大增,导致操作系统的free memory低于/proc/sys/vm/min_free_kbytes设置的值,触发了linux的oom killer,由于在该python服务器上部署有memcached服务,在oom killer的算法下kill了memcached的进程,但是在重启的过程中由于申请不到memcached设置的内存,重启失败,导致依赖该memcached的服务出现大面积延时。
这里有2个问题:
1、应尽量解决python内存泄露的问题,其实个人觉得不应该用python做大规模系统,java才是工程化的主流语言,而且java的生态系统更完善
2、memcached服务应部署到专用的服务器,避免受其它服务影响,一个python进程挂了对集群基本无影响,但是一个memcached进程挂了,影响的面就大了
通过这件事重新理解了一下linux的free -m命令的含义,第一行是从操作系统角度看系统内存的情况,其中buffer是存放写io的数据,cache是存放读io的数据,操作系统用于优化io读写,第二行是从应用程序看系统内存的情况,通常说的real free memory是指第二行显示的剩余内存,这里面包含有cache和buffer的内存,由于cache和buffer的io数据可以被很快释放,所以一般不影响应用程序申请内存。
相关推荐
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
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
问题原因分析:使用ScriptEngine.eval每次都会对脚本进行编译,生成一个新的类,被GroovyClassLoader加载,大量执行计算后,将导致被加载的类数量不断增加,最终OOM。 解决办法:对计算的表达式expression进行预...
1 概述 Android的设计理念之一,便是应用程序退出,但进程还会继续存在系统以便...Android基于Linux的系统,其实Linux有类似的内存管理策略——OOM killer,全称(Out Of Memory Killer), OOM的策略更多的是用于分配内存
然而不是,而是我们的监控系统显示,Plumbr服务出故障了。 作为这个领域的经验丰富的老鸟,我打开了咖啡机,这是正确解决问题的第一步。一杯咖啡在手之后,现在我可以开始处理故障了。首先要怀疑的是应用...
proc <pid> oom_adj set to -17 protects the oom killer for legacy purposes.
SurfaceView加载动画 解决OOM问题 多少帧都没问题 不会卡顿 不会卡顿
这个demo解决了由于大量使用大图片,导致极度不流畅,甚至OOM。使用了二次裁剪,进行图片压缩,减小内存的使用
oom-killer通常在Linux用户中享有不良声誉。 这可能是Linux仅在绝对没有其他选择时才调用它的部分原因。 它将换出桌面环境,删除整个页面缓存,并在最终终止进程之前清空每个缓冲区。 至少那是我认为的做法。 我坐...
图片oom,解决方法 图片oom,完美deom
OOM分析工具-MemoryAnalyzer JVM dump分析利器
安卓 OOM内存
主要介绍了Slave memory leak and trigger oom-killer,需要的朋友可以参考下
比如:这句话是在oom_kill_process()->dump_header()函数里打印出来的,告诉你那个进程触发的这次oom killer,这里显示是in
在运行几次循环之后,就会报错OOM。 解决方法是在每个代码后面接clear_session()函数,显示的关闭TFGraph,再重启。 详情参考 https://keras.io/backend/#backend-functions。 from keras import backend as K K....