天天看點

linux 記憶體不足 oom,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