• 白华
    2019-01-09
    自己跑虚拟机跑的k8s小集群,node节点跑的镜像太多,就特别卡,看集群情况发现好多pod都死了,看虚拟机上面就写到oom自动杀进程了,以前从没遇到过oom,这次一下就知道怎么回事了

    作者回复: 😊 k8s别忘了设置好内存资源的请求和限制

    
     8
  • 陳先森
    2019-04-05
    很多同学装bcc工具的时候都提示找不到动态库之类的,经过本人亲测是因为没有安装匹配新内核版本的内核头包。我的系统centos7.3更新了之后内核是5.0.5版本的,升完之后一直提示缺少库文件,我的做法是
    rpm -qa |grep kerner,先查找系统内核版本,网上查找相应的匹配kerner-devel包,及时没有相同版本也不要紧,比如5.0.5-1的版本就是我系统的版本网上找了没有这个版本对应的kerner-devel包但是不知道为什么升级了会安装这个版本,我系统升级前centos7.3,升级后7.6。我就下载了5.0.5-3并安装,然后版本的,找到对应的包版本,rpm -ql 包版本,做个软连接就OK。至此bcc已经安装完成。做为一个linux运维我都装了2天,可想而知大家。此方法亲测centos7.3
    展开

    作者回复: 👍谢谢分享

     2
     2
  • 好好学习
    2019-01-13
    内存统计这样也可以吧smem|awk '{total+=$7};END{printf "%d kb/n",total}'

    作者回复: smem是可以的👍,不过要注意计算 PSS 而不是 RSS

    
     2
  • wykkx
    2019-01-12
    老师您好,请教一个问题,您说匿名页回收是使用swap机制,那么这里有几个问题:一是如果我的系统不开启swap(现在很多系统都是不开启swap的,尤其是web类应用,为了提升响应时间),那么匿名页还怎么回收?二是即使我开启了swap,匿名页被放到了swap上,那么swap是如何清理这些匿名页的,总不能一致保存这些匿名页吧。谢谢老师
    2019-01-10
     作者回复
    1. 不开swap,没法回收
    2. 取决于这些页的实际访问情况,只要一访问,就会换入到内存中
    ---------追问-------------------------
    首先谢谢老师的问答,可能是我没有描述清楚。一是,如果按照老师说的“不开swap,没法回收”那么我系统产生的大量匿名页怎么办?是不是一直在内存里,不能被回收?直到引发oom,把这个进程干掉?;二是“ 取决于这些页的实际访问情况,只要一访问,就会换入到内存中”如果这些被换到swap上的匿名页量很大 ,把swap都写满了,这个时候是怎么选择从swap里清理哪些匿名页呢?
    展开

    作者回复: 1.是的;2. swap都满了,说明内存也耗尽了呀,这时候就要OOM了

    
     2
  • cuikt
    2019-05-06
    bcc-tool 确实厉害,无奈生成环境不可能轻易升级内核,只能学习使用。
    
     1
  • 划时代
    2019-01-09
    老师,在“如何统计所有进程的物理内存使用量”的问题中,我曾尝试将/proc/[pid]/smaps中的项Pss相加,但发现一个进程中有多个地址段的Pss为0kB,而Rss是不为0kB的,该区域占用了物理内存却没有计算在Pss内,表示不太理解?

    作者回复: 什么进程?

    
     1
  • ninuxer
    2019-01-09
    打卡day23
    喜欢一篇文章看两次,第一次看,第二次是实践的时候再看一遍

    作者回复: 👍

    
     1
  • 飘云
    2020-02-09
    老师 ,一个进程的 oom score 到底是根据什么计算的并没有说, 或者没有说清楚,说明白
    
    
  • hana
    2019-11-07
    打卡
    
    
  • 风清扬
    2019-09-13
    问题五我认为有问题,不知道是不是理解错了。
    最开始写法存在内存泄露,我认为也是有问题的,返回值是v,类型long long *,那么解引用拿到的还是long long,另外多申请的1023个long long 有啥用????

    郭江伟的解法,是一个long long v[1024],返回值类型long long,返回什么?返回v[0]吗,那剩下的存的什么?
    
    
  • 饭粒
    2019-09-01
    原来更新内核后可以直接yum安装bcc,不用挨个安装llvm等依赖太好了,赞。
    
    
  • JJj
    2019-06-29
    OOM 触发的时机基于虚拟内存。换句话说,进程在申请内存时,如果申请的虚拟内存加上服务器实际已用的内存之和---这里的实际已使用内存是不是对应free里面的used

    作者回复: 应该是buff/cache+used,参考问题1的第三种方式,先尝试回收内存然后才是OOM

    
    
  • 小松松
    2019-05-08
    老师,请教个问题。 文件页和匿名页是什么呢? 看书上说的很懵,希望老师能举个实际用途的例子讲解下。

    作者回复: 请参考 19 | 案例篇:为什么系统的Swap变高了

    
    
  • H&HH
    2019-03-22
    老师,初始系统版本是centos7.3,按照你给的安装bcc-tools步骤安装完后还是出现了以下报错,请问老师怎么回事呀
    [root@server tools]# ./cachetop
    Traceback (most recent call last):
      File "./cachetop", line 21, in <module>
        from bcc import BPF
      File "/usr/lib/python2.7/site-packages/bcc/__init__.py", line 27, in <module>
        from .libbcc import lib, bcc_symbol, bcc_symbol_option, _SYM_CB_TYPE
      File "/usr/lib/python2.7/site-packages/bcc/libbcc.py", line 17, in <module>
        lib = ct.CDLL("libbcc.so.0", use_errno=True)
      File "/usr/lib64/python2.7/ctypes/__init__.py", line 360, in __init__
        self._handle = _dlopen(self._name, mode)
    OSError: /opt/lampp/lib/libstdc++.so.6: version `GLIBCXX_3.4.14' not found (required by /lib64/libbcc.so.0)
    [root@server tools]# uname -r
    5.0.3-1.el7.elrepo.x86_64
    [root@server tools]# cat /etc/redhat-release
    CentOS Linux release 7.6.1810 (Core)
    展开

    作者回复: 看错误是找不到依赖的动态链接库,可以试试修复安装 libstdc++

    
    
  • lin
    2019-03-12
    打卡:
    bcc-tools install(centos6.9) 已尝试可以顺利安装
    https://blog.csdn.net/luckgl/article/details/88355074

    作者回复: 谢谢分享

    
    
  • LotusChing
    2019-02-16
    老师,您对wykkx同学问题的回答我有些不理解,"不开swap,没法回收匿名页。",我自己用tomcat容器做了个小实验。

    环境:Ubuntu 14.04.1 LTS, Trusty Tahr,3.13.0-128-generic,docker 17.12.0-ce,tomcat:8-alpine

    我的环境没有启用swap(free看到的都是0),通过启停tomcat容器,并观察/proc/zoneinfo、/proc/meminfo中anon相关匿名页相关指标,发现这些指标数值会随着启停容器上下浮动。

    这样,是不是说明应用占用的匿名页只有在退出时释放?那应用运行过程中使用到的内存如何释放呢?通过GC么?

    希望老师能抽空回复下关于我们的这个问题么,感谢!
    展开

    作者回复: 停止进程后当然是会释放进程所占用的内存。我说的是进程一直在运行中的时候,进程自己分配的内存只能进程自己来释放,或者等着进程推出后由系统释放。

    
    
  • 如果
    2019-02-13
    day22,打卡
    
    
  • 超
    2019-02-01
    我的现象是32G服务器 free 还有2g多出现oom,但并没有容器的内存升高。
    进程申请的虚拟内存 + 服务器已用的内存(包括buf/cache) > 物理内存 的时候会触发OOM

    那们我个人理解OOM 发生以后会出现某个进程内存飙升的情况,但从OOM对应的时间上来看,监控没有发现某个容器进程飙升。 不知道是为什么?



    ubuntu 16.04
    sar -r -S 1 %commit 与 free -g 里面又该如何对应呢?
    展开

    作者回复: 使用容器的话,内存可能还受到cgroups的限制。这时候容器OOM只代表容器的内存达到了limit,不代表系统内存使用情况。另外,进程的内存使用不一定是飙升,还有可能缓慢增长(其实大部分内存泄漏都是这样).

    %commit跟free没有对应关系,commit是一个动态计算出来的估计值

    
    
  • marvinren
    2019-02-01
    我有个问题有点没弄明白,从实验角度上讲,进入cache和buffer的文件页,也会会被swap回收,对么?

    作者回复: 不会的,swap回收的是匿名页

    
    
  • wykkx
    2019-01-15
    老师您好,打扰了,我追问的内容麻烦您抽空回答下:
    ---------追问-------------------------
    首先谢谢老师的问答,可能是我没有描述清楚。一是,如果按照老师说的“不开swap,没法回收”那么我系统产生的大量匿名页怎么办?是不是一直在内存里,不能被回收?直到引发oom,把这个进程干掉?;二是“ 取决于这些页的实际访问情况,只要一访问,就会换入到内存中”如果这些被换到swap上的匿名页量很大 ,把swap都写满了,这个时候是怎么选择从swap里清理哪些匿名页呢?
    谢谢
    展开
    
    
我们在线,来聊聊吧