linux被进程占用,Linux 系统下 used 内存被那个进程占用了?

Linux 系统下 used 内存被那个进程占用了?

关于 used 下的内存使用情况分析

1, 来由

开发同事反应本机没有做什么, 内存就占用了 11G, 也不知道是什么进程占用了, 为此我展开了 used 内存占用的分析, 上数据图# free -m

total used free shared buffers cached

Mem:32111113162079401571396

-/+ buffers/cache:976222348

Swap:8047647983

2, 原因分析

针对此问题, 我及时查看哪个进程占用# ps aux | head -1; ps aux| sort -rnk 4 | head -10

USER PID%CPU%MEM VSZ RSS TTY STAT START TIME COMMAND

zabbix228660.00.0782441836?SJan180:27/usr/sbin/zabbix_agentd:listener#3 [waiting for connection]

zabbix228650.00.0782441856?SJan180:27/usr/sbin/zabbix_agentd:listener#2 [waiting for connection]

zabbix228640.00.0782441852?SJan180:27/usr/sbin/zabbix_agentd:listener#1 [waiting for connection]

zabbix228630.00.0781201924?SJan180:59/usr/sbin/zabbix_agentd:collector[idle1sec]

zabbix228610.00.078120768?SJan180:00/usr/sbin/zabbix_agentd-c/etc/zabbix/zabbix_agentd.conf

USER PID%CPU%MEM VSZ RSS TTY STAT START TIME COMMAND

rtkit28550.00.0168452844?SNl20204:55/usr/libexec/rtkit-daemon

rpcuser22120.00.023344740?Ss20200:00rpc.statd

rpc20920.00.018972604?Ss20200:16rpcbind

root990.00.000?S20200:00[kintegrityd/9]

但是没有找到问题点, 继续

查看 / proc/meminfo 文件时# cat /proc/meminfo 未启动 java 时 启动 java 后

MemTotal:32882392kB32882392kB

MemFree:11152484kB9941460kB

Buffers:174520kB175588kB

Cached:1485864kB1508656kB

SwapCached:5100kB5092kB

Active:10906000kB12098640kB

Inactive:845964kB859936kB

Active(anon):10088872kB11271860kB

Inactive(anon):4448kB4448kB

Active(file):817128kB826780kB

Inactive(file):841516kB855488kB

Unevictable:0kB

Mlocked:0kB

SwapTotal:8241144kB8241144kB

SwapFree:8174820kB8174828kB

Dirty:980kB1472kB

Writeback:0kB

AnonPages:10090488kB11275588kB

Mapped:35960kB35964kB

Shmem:1600kB1600kB

Slab:9708836kB9709656kB

SReclaimable:8982448kB8982488kB

SUnreclaim:726388kB727168kB

KernelStack:5592kB5888kB

PageTables:34344kB36660kB

NFS_Unstable:0kB

Bounce:0kB

WritebackTmp:0kB

CommitLimit:24682340kB24682340kB

Committed_AS:21549588kB21577332kB

VmallocTotal:34359738367kB34359738367kB

VmallocUsed:200220kB200220kB

VmallocChunk:34341972664kB34341972664kB

HardwareCorrupted:0kB

AnonHugePages:9539584kB10670080kB

HugePages_Total:0

HugePages_Free:0

HugePages_Rsvd:0

HugePages_Surp:0

Hugepagesize:2048kB2048kB

DirectMap4k:10240kB10240kB

DirectMap2M:33544192kB33544192kB

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 * ![操作命令](https://img2020.cnblogs.com/blog/1612349/202101/1612349-20210121214904457-1764740405.png) 由于图片出不来, 我直接贴上去吧

'''# 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."

exit1

fi

ps-e-o pid,rss|sort-rnk2|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

whileread line

do

lsof-p $line2>/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/java7,7342014,09650.00

/lib64/libuuid.so.1.3.018,93650520,480100.00

/usr/lib64/libstdc++.so.6.0.13989,8402420109446,46445.04

/usr/lib64/libsapjco3.so5,407,6991,32105002,048,00037.85

/weaver/ecology/-INF/lib/ehcache-2.8.3.jar5,637,5641,37704541,859,58432.97

这边我只保留部分数据,

这时, 脚本已启作用了, 现在只需要添加定时任务让它自动运行并输出日志给到系统了, 方便他们及时查看.

来源: http://www.bubuko.com/infodetail-3718791.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值