服务器性能测试分析方法

概述

  • CPU :关注使用率、运行队列和上下文切换 

         排查方法 uptime -----> vmstat 

  • 内存:可用内存,swap占用,页面交换(Paging)

         排查方法 vmstat 

  • 磁盘IO:%util ,IOPS,数据吞吐量

        排查方法 : iostat  ----> iotop 

涉及linux 命令 

  • vmstat  /uptime  一般系统自带
  • iostat  # 安装 yum install sysstat
  • fio # 安装 yum install libaio-devel fio

CPU:

    一般判断cpu 是不是存在性能瓶颈,可以通过

  • uptime 查看性能负载(load average),如果系统持续处于高负载,(15分钟平均负载 > 2 *CPU总核数)
  • 通过 vmstat的r值和b值来确认是CPU负荷重还是等待I/O的进程太多
  • ps : vmstat r 值需要结合id(空闲CPU)来看,所以如果你的id值不小于40的话CPU是不存在瓶颈的
  • CPU使用率 = us + sy , 一般在80%以下
        如果sy 一直 > 25% ,关注in(中断)和cs(上下文切换)的数值

[root@VM_0_12_centos ~]# vmstat 
procs -----------memory----------           ---swap-- -----io----  -system--  ------cpu-----
 r  b      swpd   free     buff     cache     si   so       bi    bo    in   cs       us sy id wa st
 3  0      0       68156  27976 508292    0    0        8    31     3    1        1   0  99  0  0


us:用户占用CPU的百分比
sy:系统(内核和中断)占用CPU的百分比
id:CPU空闲的百分比

Procs
       r: 运行进程的数量 (正在运行和等待运行)
       b: 等待IO的进程数量 The number of processes in uninterruptible sleep.

   Memory
    
       swpd: 使用的虚拟内存量
       free: 可用内存大小.
       buff: 用作的内存量(buffers)
       cache: 用作的内存量 (cache).
       inact: 不活动内存量.  (-a option)
       active: 活动的内存量.  (-a option)

   Swap
       si: 磁盘到内存 Amount of memory swapped in from disk (/s).
       so: 内存到磁盘 Amount of memory swapped to disk (/s).

   IO
       bi: 从块设备接收的块 Blocks received from a block device (blocks/s).
       bo: 从块发送到块设备 Blocks sent to a block device (blocks/s).

   System
       in: 每秒的中断数,包括时钟.
       cs: 每秒的上下文的切换数

   CPU
       百分比显示
       us: 用户时间.  (user time, including nice time)
       sy: 系统(内核)时间.  (system time)
       id: cpu空闲时间百分比(包括了IO等待时间).  Prior to Linux 2.5.41, this includes IO-wait time.
       wa: 花费在io等待的时间.  Prior to Linux 2.5.41, included in idle.
       st: 从虚拟机窃取的时间.  Prior to Linux 2.6.11, unknown.

 

cache(缓存) 和 buffer(缓冲)  简单概述

cache : 主要用于弥补 高速设备和低速设备之间速度不匹配问题,最终起到加快访问速度的作用

buffer : 进行流量整形,把突发的大数量较小规模的 I/O 整理成平稳的小数量较大规模的 I/O,减少响应次数

Cache一般用于读取数据,Buffer一般用于写入数据       

内存(可用内存,swap占用,页面交换(Paging)):

  • 内存占用应该小于物理内存的80%    
  • 页面交换:si/so 值判断  
  • swap占用 :swpd来获取当前SWAP空间的使用情况
  •  当swpd不为0,但si,so持续保持为0时,内存资源并没有成为系统的瓶颈

 

磁盘IO

  • 随机IO:随机读写数据,读写请求多,每次读写的数据量较小,其IO速度更依赖于磁盘每秒能IO次数(IOPS)
  • 顺序IO:顺序请求大量数据,读写请求个数相对较少,每次读写的数据量较大,顺序IO更重视每次IO的数据吞吐
  • IOPS:每秒处理读/写请求的数量,即iostat输出中的r/s和w/s,个人PC的机械硬盘IOPS一般在100左右

  • 数据吞吐量:每秒读/写的数据大小,即iostat输出中的rkB/s和wkB/s,通常磁盘的数据吞吐量与IO类型有直接关系,顺序IO的吞吐能力明显优与随机读写,可以预先测得磁盘在随机IO和顺序IO下的吞吐量

iostat -x 
Linux 3.10.0-514.26.2.el7.x86_64 (VM_0_12_centos)     10/28/2019     _x86_64_    (1 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.60    0.00    0.48    0.22    0.00   98.69

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  r_await  w_await  svctm  %util
vda               0.00     2.92         0.62    4.25     7.99    30.74    15.90     0.06        12.07    4.34   13.20        0.65   0.32
scd0              0.00     0.00        0.00    0.00     0.00     0.00    64.78     0.00         0.45    0.45      0.00         0.33   0.00
    
svctm:平均每次设备I/O操作的服务时间 (毫秒)【警告! 不再信任此字段。 将来的sysstat版本中将删除此字段。】
util:一秒中I/O 操作的利用率,或者说一秒中有多少时间 I/O 队列是非空的。
>60% 很可能降低系统性能表现

IO测试工具:

fio 命令是专门测试 iops 的命令

如果发现IO 瓶颈 可以进一步通过iotop: 查看IO 负载具体是哪个进程

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值