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

    xiaoxiao2021-04-15  185

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

    top 按M

    free -m

    atop

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

    ps -eLf

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

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

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

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

    后续:优化相关的server端~

    相关资源:LINUX类主机JAVA应用程序占用CPU、内存过高分析手段

    最新回复(0)