linux内存泄漏与OOM问题排查

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  

 

你可能感兴趣的:(Linux)