[转]性能测试指标分析-内存

总体思路:

1)先执行free命令,确认系统整体内存使用情况;【如果内存使用率大于80%,可能存在问题】

2)再通过vmstat命令来进一步确认内存瓶颈;【重点关注:swpd、si、so、bi、bo】

3)缺页错误判断(写的很粗略);

一、free

free命令显示了Linux系统中物理内存、交换分区的使用统计信息。

total:总计物理内存的大小 used:已使用内存大小 free:可用内存 shared:多个进程共享的内存总额

buff/cache:磁盘缓存的大小

空闲内存=free+buffers+cached=total-used

free -m:以MB为单位显示内存数据 (下图我发现有时存在不同,used有时候包含buffers/cached,有时不包含buffers/cached,此文以不包含为例讲解,具体情况请具体分析)

可用内存 = free + buffers + cached

第一行 物理内存使用:

物理内存总量(total)= used+可用内存 = 3317+(330+4162)=7809

第二行 交换分区使用:

交换分区内存总量 = 正在使用的交换分区内存+空闲交换分区内存 = used+free=478+3489=3967

分析:

注意>50% 告警>70% 严重>80%

需要注意的是在下面这些情况下,系统是正常的,不需要担心:

空闲内存free接近于0【注:还有buffers/cache可用】
可用内存(free+buffers/cache)占total的 20% 以上
下面情况说明内存过低,需要注意:

可用内存(free+buffers/cache)过低,接近于0的时候 或 used接近total【也有说法为内存使用率大于80%或85%或90%】
dmesg | grep oom-killer显示有OutOfMemory-killer正在运行(不理解)

二、vmstat

通过free初步了解内存可用情况后,需结合vmstat进一步查看交换情况

vmstat 1 2:1秒钟刷新显示一次,共刷新显示2次

重点关注 swpd、si、so 3个指标;

分析:

1)si、so(si:从磁盘交换的内存大小;so:交换到磁盘的内存大小)

si、so2个值长期为0,则无内存方面性能问题;
如果si、so这2个值长期大于0,此时系统性能会受到影响,磁盘IO和CPU资源都会被消耗;需要考虑增加系统内存;
如果so数值大,且swpd占比很高,表示内存已经饱和;需要考虑增加系统内存;
如果swpd(虚拟内存)不断增加,而且存在着大量的页面交换(si和so),证明系统的物理内存已经不能满足系统需求,系统必须把物理内存的页面交换到磁盘中去;
ps:当看到空闲内存(free)很少的或接近于0时,就认为内存不够用了,这个是不正确的。不能光看这一点,还要结合si和so;如果free很少,但是si和so也很少(大多时候是0),那么不用担心,系统性能这时不会受到影响的。(存疑,free本来就不能断定内存不够,还得关注buffers/cache的值)

2)bi、bo(bi:从块设备接受的块;bo:发送给块设备的块)

如果bi、bo这个值长期不为0,说明内存可能有问题,因为没有用到缓存(当然不排除直接I/O的情况,但一般很少直接I/O的)
如果用作缓冲区(buff)和快速缓存(cache)的物理内存不断增加,而空闲的物理内存(free)不断减少,证明系统中运行的进程正在不断消耗物理内存;

三、缺页

1、sar -W 查看次缺页数

页面发生交换时,服务器的吞吐量会大幅下降;服务器状况不良时,如果怀疑因为内存不足而导致

了页面交换的发生,可以使用这个命令来确认是否发生了大量的交换

说明:sar命令,次缺页多意味已经在不停地和swap打交道,证明内存已经饱和;

pswpin/s:每秒系统换入的交换页面(swap page)数量

pswout/s:每秒系统换出的交换页面(swap page)数量

四、内存OOM

内存不够用会触发内核的OOM机制;

查看内核日志有无OOM机制kill进程;

参考

[1] https://blog.csdn.net/xiaona0523/article/details/107855669

posted @ 2022-06-29 15:36  JasonCeng  阅读(554)  评论(0编辑  收藏  举报