服務器性能測試分析方法

概述

  • 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 負載具體是哪個進程

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章