Linux内存泄漏排查思路

  • Post author:
  • Post category:linux




什么是内存泄漏

申请内存不释放,常见现象就是内存被耗完,导致死机或者有些程序被kill掉。



排查思路

了解内存分配过程,如下:

在这里插入图片描述

所以先看应用层有没有内存泄漏(1处),然后slab(2处),然后再看没有统计的(3处)。

查看进程使用的物理内存有没有一直增大:

while true; do ps -e -o pid,comm,%mem | sort -n -r -k 3 | head -n 10 ;echo “———-”; sleep 1; done

查看slab有没有一直增大:

while true; do cat /proc/slabinfo | awk ‘{name=$1; size=$2*$4/4096; printf “%s %lu\n”, name, size;}’ | sort -n -r -k 2 | head -n 20; echo “————–”; sleep 1;done;

查看没有统计的有没有增大:

while true;do cat /proc/meminfo | awk ‘{if($1==“Active:” || $1==“Inactive:” || $1==“Unevictable:” || $1==“Slab:” || $1==“KernelStack:” || $1==“PageTables:”) u+=$2; if($1==“MemTotal:”) used+=$2; if ($1==“MemFree:”) used-=$2;}END{print used-u}’; sleep 1;done



找到异常的,进行细节排查



版权声明:本文为qq_21640423原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。