閱讀621 返回首頁    go 小米 go 小米6


記一次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端~

最後更新:2017-08-13 22:31:41

  上一篇:go  計算的旋律—阿裏雲視覺語言的探索
  下一篇:go  【8月9日直播】研發協同RDC敏捷項目管理實踐