`
无尘道长
  • 浏览: 160157 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

linux的oom killer导致memcached服务下线

阅读更多

   公司部分项目是用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数据可以被很快释放,所以一般不影响应用程序申请内存。

分享到:
评论

相关推荐

    有关OOM KILLER的一些理解

    OOM Killer,全称为Out of Memory Killer,是Linux内核中的一种机制,用于处理系统内存不足的情况。当系统内存耗尽时,为了避免整个系统的崩溃,OOM Killer会选择并终止一些进程来释放内存,从而确保系统的稳定运行...

    Linux系统的OOM Killer处理机制.docx

    Linux系统的OOM Killer处理机制 Linux系统的OOM(Out of Memory)Killer处理机制是一种内核机制,用于在系统内存不足时杀掉某个进程以腾出内存留给系统用,不致于让系统立刻崩溃。OOM Killer的触发条件是系统内存...

    MySQL OOM 系统二 OOM Killer

    在Linux系统中,当内存资源紧张,即将耗尽时,为避免系统崩溃,Linux内核引入了一种称为OOM (Out Of Memory) Killer的机制。OOM Killer会选择性地杀死某些进程以回收内存。这一机制主要针对系统可用内存(包括Swap...

    heart_oom_protect:Erlang库可保护心脏免受Linux内核的OOM Killer的杀害

    不幸的是,对于Erlang应用来说,一旦被OOM Killer选中,可能导致整个集群的不稳定。 **heart_oom_protect库的功能** heart_oom_protect库专为Erlang OTP设计,其核心功能是监控系统内存状态并在接近OOM时采取行动。...

    lab8_oom实验说明1

    《理解Linux OOM Killer机制:从lab8_oom实验入手》 Linux操作系统的OOM (Out-Of-Memory) Killer是一个重要的内存管理机制,用于处理系统内存不足的情况。当系统资源极度紧张,无法分配新的内存时,OOM Killer会...

    MySQL Slave 触发 oom-killer解决方法

    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

    oom.rar_legacy

    在Linux系统中,当系统内存不足时,OOM killer会被触发,它会选择并终止某些进程以回收内存,从而防止系统完全崩溃。描述提到的“oom_adj”是Linux内核中的一个参数,用于调整进程的OOM分数。将其设置为-17意味着这...

    Groovy大量计算导致oom的解决办法

    问题原因分析:使用ScriptEngine.eval每次都会对脚本进行编译,生成一个新的类,被GroovyClassLoader加载,大量执行计算后,将导致被加载的类数量不断增加,最终OOM。 解决办法:对计算的表达式expression进行预...

    【性能】OOM原理解析:LowMemoryKiller原理

    1 概述 Android的设计理念之一,便是应用程序退出,但进程还会继续存在系统以便...Android基于Linux的系统,其实Linux有类似的内存管理策略——OOM killer,全称(Out Of Memory Killer), OOM的策略更多的是用于分配内存

    安卓内存OOM分析

    例如,理解Linux内核的oom killer机制,它根据每个进程的oom_score来决定优先杀死哪个进程。oom_score是基于进程的内存使用情况和其他因素计算出来的,较高的值表示更容易被杀死。 此外,内核层面的优化还包括调整...

    MySQL OOM 系列一 Linux内存分配

    在后续章节中,我们将深入探讨Linux OOM Killer的工作机制,以及如何避免MySQL因内存不足而被杀死的情况。了解并正确配置这些设置对于确保RDS(如网易云关系数据库服务)的稳定运行至关重要。通过优化内存管理和理解...

    Android 内核分析报告4

    尽管LMK和标准Linux内核中的OOMKiller在设计思想上有许多相似之处,但两者之间还是存在一些重要的区别: 1. **实现方式:** LMK是作为一个Shrinker实现的,而OOMKiller则是在内存分配时被调用(如果内存资源非常...

    Linux 的 OOM 终结者

    然而不是,而是我们的监控系统显示,Plumbr服务出故障了。    作为这个领域的经验丰富的老鸟,我打开了咖啡机,这是正确解决问题的第一步。一杯咖啡在手之后,现在我可以开始处理故障了。首先要怀疑的是应用...

    大量加大drawable下图片,导致OOM,使用二次裁剪

    当应用程序加载过多的大尺寸图片时,可能会触发"Out Of Memory"(OOM)错误,导致应用崩溃。这个问题在标题“大量加大drawable下图片,导致OOM,使用二次裁剪”中被提及,暗示了解决这一问题的一种策略——二次裁剪...

    Android LMK机制简介

    虽然Linux的oom killer能够应对大多数低内存情况,但在Android这种高度定制化的环境中,oom killer存在一些明显的局限性: - **响应速度慢**:oom killer通常在内存极度紧张时才会被触发,此时可能已经对用户体验...

    ECS 运维指南之Linux系统诊断.pdf

    2. OOM killer 是被谁触发的。 3. 我的服务器内存去哪儿了。 4. CPU 占用不高但网络性能很差的一个原因。 三、Linux 主机网络问题 Linux 主机网络问题是 ECS 用户最常见的问题之一。该部分总结了一些可能会引起 ...

    OOM分析工具-MemoryAnalyzer.zip

    当应用程序出现Out of Memory (OOM)错误时,通常意味着系统无法分配足够的内存来执行任务,这时就需要借助专业的分析工具来查找问题的根源。MemoryAnalyzer(MAT)是IBM开发的一款强大的JVM堆内存分析工具,它能够...

Global site tag (gtag.js) - Google Analytics