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