记一次Linux系统内存占用较高得排查

背景:收到报警,系统的内存使用率触发阈值(部分图是后补的)
mem1
1,登陆系统,使用命令查看内存分配

top 按M

mem2

free -m

mem3

atop

看下内存分配(cat /proc/meminfo 也可以看到一些细化的内存使用信息)
mem4
2,发现cache才1.7g,slab非常高,4.4g ,slab内存简单理解为是系统占用的
使用slabtop继续分析
mem5
3,看到proc_inode_cache使用的最多,这个代表是proc文件系统的inode的占用的。
4,查进程,但是进程不多,再查线程,可以通过如下命令进行检查。

ps -eLf

得到如下的结果:(没有原图了,这里补得图,用云盾做介绍)
mem6
计算socket

ll /proc/22360/task/*/fd/ |grep socket |wc -l

mem8

ll /proc/22360/task/*/fd/  |wc -l

计算一下有多少fd
mem7
5,每个socket的inode也不一样
mem9
当时看到的现场有几万个fd,基本全是socket,每个inode都是占用空间的,且proc文件系统是全内存的。 所以我们才会看到slab中proc_inode_cache内存占用高

后续:
优化相关的server端~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值