1、診斷存在洩露
#觀察記憶體總體使用情況,發現記憶體free在減少
$ vmstat 5
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 205940 88248 3247312 0 0 0 30 5206 2352 2 2 96 0 0
0 0 0 202824 88260 3249784 0 0 0 114 5473 2617 2 1 96 0 0
0 0 0 201104 88272 3251264 0 0 0 38 5154 2056 1 1 97 0 0
0 0 0 200104 88284 3252852 0 0 0 18 4808 1552 1 1 98 0 0
0 0 0 199300 88296 3254124 0 0 0 2073 4762 1497 1 0 99 0 0
#找到使得記憶體減少的程序
$ top #或ps
$ pmap
上面3步可以用工具bcc包中的memleak分析
$ memleak -a -p $(pidof app) #已知程序号情況下,或者直接 $memleak -a
2、記憶體洩露最終通過OOM釋放
#檢視OOM的程序
$ grep "Out of memory" /var/log/messages