buff/cache使用较多
- 通过
free -h
发现大部分内存都被缓存占用后,可以使用vmstat
或者sar
观察一下缓存的变化趋势,确认缓存的使用是否还在继续增大。 - 如果继续增大,则说明导致缓存升高的进程还在运行,那你就能用buff/cache分析工具(比如
cachetop
、slabtop
等),分析这些缓存到底被哪里占用。
buff/cache使用较少,但内存不足
- 通过
free -h
发现排除缓存占用后,可以继续用pidstat
或者top
,定位占用内存最多的进程。 - 找出进程后,再通过进程内存空间工具(比如
pmap
),分析进程地址空间中内存的使用情况就可以了。
内存占用不断增加,存在内存泄露的可能性
- 通过
vmstat
或者sar
发现内存在不断增长后,可以分析中是否存在内存泄漏的问题。 - 可以使用内存分配分析工具
memleak
,检查是否存在内存泄漏。如果存在内存泄漏问题,memleak会为你输出内存泄漏的进程以及调用堆栈。