一次find命令导致的内存问题排查

=Start=

缘由:

线上扫描加了个find命令,然后很多机器的磁盘IO就开始告警了,这个是意料之中的事情,毕竟该命令会增加读盘操作么;比较诡异的问题在于,部分机器的内存升高的比较厉害。。。我的天呐,要是把重要业务搞挂了我可怎么办。。。细思极恐

出了问题不可怕,「常在河边走,哪有不湿鞋」,通过定位原因,学习经验,以后避免就是了。

正文:

参考解答:


find可能引发的内存增长主要是因为slab消耗,且主要是inode和dentry的缓存:

$ cat /proc/slabinfo | grep --color -iE "inode|dentry"
$
$ cat /proc/slabinfo |awk '{print $1,$3*$4/1024,"KB"}' | sort -k2 -n
$ cat /proc/slabinfo |awk '{print $1,$3*$4/1024,"KB"}' | sort -k2 -n | tail

什么是pagecache/inodes/dentries?以及Linux内存的管理方法:


Linux系统对内存和swap的使用方式是什么样的?

  1. 有内存时先用内存;
  2. 内存不够了用swap;
  3. 内存充足了再把swap里的热点数据置换出来;
参考链接:

=END=

声明: 除非注明,CrazyOf.me文章均为原创,转载请以链接形式标明本文地址,谢谢!
https://crazyof.me/blog/archives/3231.html

《一次find命令导致的内存问题排查》上有2条评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注