内存瓶颈分析
内存常用分析工具: top,free, nmon, /proc/zoneinfo, /proc/buddyinfo,/proc/meminfo, /proc/slabinfo, /proc/vmstat, /proc//maps等。
内存信息简介
内存资源监控的工具较多,大部分工具的监控内容相似,本节以top为例做重点介绍。top命令可以显示CPU、内存等信息:
top - 14:32:45 up 43 days, 8:28, 21 users, load average: 0.19, 0.30, 0.30
Tasks: 630 total, 1 running, 628 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.1 sy, 0.0 ni, 99.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 26372547+total, 20976670+free, 4104164 used, 49854604 buff/cache
KiB Swap: 16777212 total, 16777212 free, 0 used. 25713113+avail Mem
跟内存相关的2个段为Mem和Swap,分别表示物理内存和交换内存。
字段说明如下:
- Total:物理/交换内存总量
- Used:使用的物理/交换内存总量
- Free:空闲物理/交换内存总量
- Buffers:用作内核缓存的内存量
- Cached:缓冲的交换区总量
内存资源分析
主要分析:
- swap是否被使用,如果使用了那就会拖累性能,消耗cpu和io时间。
例如:测试tpcc时有几个g的swap使用,导致峰值上不去,然后调整了shared_buffers,变小一些,然后就不用交换分区了,然后峰值就上去了。原因是一些临时的数据可能比较多的情况,然后放不下内存就用了交换分区。
- 空闲内存是否比较少,一般来说如果空闲内存/物理内存>70%,内存性能优,如果小于20%,则性能差,需要添加内存。
- 如果内存用的很少,查询比较慢,而且数据量很大,并且很多io,那可以考虑调大shared_buffers,提高命中率。