zoukankan      html  css  js  c++  java
  • linux系统下used内存被那个进程占用了?

    关于used下的内存使用情况分析
     
    1、来由
          开发同事反应本机没有做什么,内存就占用了11G,也不知道是什么进程占用了,为此我展开了used内存占用的分析,上数据图
          # free -m
                       total       used       free     shared    buffers     cached
          Mem:         32111      11316      20794          0        157       1396
          -/+ buffers/cache:       9762      22348
          Swap:         8047         64       7983
    2、原因分析
          针对此问题,我及时查看哪个进程占用
          # ps aux | head -1; ps aux| sort -rnk 4 | head -10
          USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
          zabbix   22866  0.0  0.0  78244  1836 ?        S    Jan18   0:27 /usr/sbin/zabbix_agentd: listener #3 [waiting for connection]
          zabbix   22865  0.0  0.0  78244  1856 ?        S    Jan18   0:27 /usr/sbin/zabbix_agentd: listener #2 [waiting for connection]
          zabbix   22864  0.0  0.0  78244  1852 ?        S    Jan18   0:27 /usr/sbin/zabbix_agentd: listener #1 [waiting for connection]
          zabbix   22863  0.0  0.0  78120  1924 ?        S    Jan18   0:59 /usr/sbin/zabbix_agentd: collector [idle 1 sec]
          zabbix   22861  0.0  0.0  78120   768 ?        S    Jan18   0:00 /usr/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf
          USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
          rtkit     2855  0.0  0.0 168452   844 ?        SNl   2020   4:55 /usr/libexec/rtkit-daemon
          rpcuser   2212  0.0  0.0  23344   740 ?        Ss    2020   0:00 rpc.statd
          rpc       2092  0.0  0.0  18972   604 ?        Ss    2020   0:16 rpcbind
          root        99  0.0  0.0      0     0 ?        S     2020   0:00 [kintegrityd/9]
          但是没有找到问题点,继续
          查看/proc/meminfo文件时
          # cat /proc/meminfo  未启动java时     启动java后
          MemTotal:       32882392 kB         32882392 kB
          MemFree:        11152484 kB         9941460 kB
          Buffers:          174520 kB         175588 kB
          Cached:          1485864 kB         1508656 kB
          SwapCached:         5100 kB         5092 kB
          Active:         10906000 kB         12098640 kB
          Inactive:         845964 kB         859936 kB
          Active(anon):   10088872 kB         11271860 kB
          Inactive(anon):     4448 kB         4448 kB
          Active(file):     817128 kB         826780 kB
          Inactive(file):   841516 kB         855488 kB
          Unevictable:           0 kB
          Mlocked:               0 kB
          SwapTotal:       8241144 kB       8241144 kB
          SwapFree:        8174820 kB       8174828 kB
          Dirty:               980 kB       1472 kB
          Writeback:             0 kB
          AnonPages:      10090488 kB       11275588 kB
          Mapped:            35960 kB       35964 kB
          Shmem:              1600 kB       1600 kB
          Slab:            9708836 kB       9709656 kB
          SReclaimable:    8982448 kB       8982488 kB
          SUnreclaim:       726388 kB       727168 kB
          KernelStack:        5592 kB       5888 kB
          PageTables:        34344 kB       36660 kB
          NFS_Unstable:          0 kB
          Bounce:                0 kB
          WritebackTmp:          0 kB
          CommitLimit:    24682340 kB       24682340 kB
          Committed_AS:   21549588 kB       21577332 kB
          VmallocTotal:   34359738367 kB    34359738367 kB
          VmallocUsed:      200220 kB       200220 kB
          VmallocChunk:   34341972664 kB    34341972664 kB
          HardwareCorrupted:     0 kB
          AnonHugePages:   9539584 kB       10670080 kB
          HugePages_Total:       0
          HugePages_Free:        0
          HugePages_Rsvd:        0
          HugePages_Surp:        0
          Hugepagesize:       2048 kB      2048 kB
          DirectMap4k:       10240 kB      10240 kB
          DirectMap2M:    33544192 kB      33544192 kB
    3、在网络上找原因
          自己分析不出问题点,网络上有很多人说slab来分配内存,但是我想知道slab中内存包括那些内容,很少的知识点,怎么办?
    我找到一个工具,linux-fincore
          下载linux-fincore工具:
                #wget https://codeload.github.com/waleedmazhar/linux-ftools/zip/master
          安装步骤如下:
                #cd /opt
                #unzip -d linux-ftools-master.zip
                #cd linux-ftools-master
                #./configure --prefix=/usr/local/linux-ftools      #请确保安装gcc依赖包,无错误进行下一步
                #make 
                #make install
          添加环境变量:
                #mv /usr/local/ftools/bin/* /usr/local/bin/       
    
    添加命令使用 `# linux-fincore --pages=false --summarize --only-cached * filename size total_pages min_cached page cached_pages cached_size cached_perc -------- ---- ----------- --------------- ------------ ----------- ----------- Could not mmap file: linux-ftools-master: No such device netapp.txt 891,161 218 0 218 892,928 100.00 --- total cached size: 892,928 `
     
    为了更好抓取内存中进程,我这边添加个脚本+定时任务来完成,提供开发需要的资料,
    脚本为:
    # cat fincore.sh
    #!/bin/bash
    . /etc/init.d/functions
    PATH=/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/java/jdk1.8.0_131/bin:/usr/java/jdk1.8.0_131/lib:/root/bin
    echo $PATH
    if [ ! -f /usr/local/bin/linux-fincore ];then
      echo "you haven't install linux-fincore."
      exit 1
    fi
    ps -e -o pid,rss|sort -rnk 2  | head -10 | awk '{print $1}' > /tmp/cache.pid
    if [ -f /tmp/cache.log ];then
       echo "the cache.files is exist,removing now"
       rm -f /tmp/cache.log
    fi
    while read line
    do
      lsof -p $line 2>/dev/null  | awk '{print $9}' >>/tmp/cache.log
    done > /tmp/cache.fincore
       fi
    done
    linux-fincore -s `cat /tmp/cache.fincore`
    rm -f /tmp/cache.{pid,log,fincore}
    测试一下脚本使用
    #/bin/bash fincore.sh > 2.log
    #查看日志中分析的数据
    /usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/java/jdk1.8.0_131/bin:/usr/java/jdk1.8.0_131/lib:/root/bin
    filename                                                                                       size        total_pages    min_cached page       cached_pages        cached_size        cached_perc
    --------                                                                                       ----        -----------    ---------------       ------------        -----------        -----------
    /weaver/jdk1.8.0_131/bin/java                                                                 7,734                  2                  0                  1              4,096              50.00
    /lib64/libuuid.so.1.3.0                                                                      18,936                  5                  0                  5             20,480             100.00
    /usr/lib64/libstdc++.so.6.0.13                                                              989,840                242                  0                109            446,464              45.04
    /usr/lib64/libsapjco3.so                                                                  5,407,699              1,321                  0                500          2,048,000              37.85
    /weaver/ecology/WEB-INF/lib/ehcache-2.8.3.jar                                             5,637,564              1,377                  0                454          1,859,584              32.97
    这边我只保留部分数据,
    这时,脚本已启作用了,现在只需要添加定时任务让它自动运行并输出日志给到系统了,方便他们及时查看。
    
  • 相关阅读:
    Jzoj4822 完美标号
    Jzoj4822 完美标号
    Jzoj4792 整除
    Jzoj4792 整除
    Educational Codeforces Round 79 A. New Year Garland
    Good Bye 2019 C. Make Good
    ?Good Bye 2019 B. Interesting Subarray
    Good Bye 2019 A. Card Game
    力扣算法题—088扰乱字符串【二叉树】
    力扣算法题—086分隔链表
  • 原文地址:https://www.cnblogs.com/wang50902/p/14310634.html
Copyright © 2011-2022 走看看