Linux性能測試之性能測試指標詳解

admin Linux運維評論714字數(shù) 4689閱讀模式
摘要

性能測試指標是衡量系統(tǒng)性能的評價標準,常用的系統(tǒng)性能測試指標包括:響應時間、并發(fā)用戶/并發(fā)、點擊率、吞吐量、TPS/QPS、PV/UV;Linux服務器常用的性能指標包括:CPU使用率、內存占用率、磁盤IO、系統(tǒng)平均負載等。

一 系統(tǒng)性能測試指標

1.1 響應時間

響應時間是指某個請求或操作從發(fā)出到接收到反饋所消耗的時間,包括應用服務器(客戶端)處理時間、網(wǎng)絡傳輸時間以及數(shù)據(jù)庫服務器處理時間。比如一個頁面從點擊/輸入到完全加載的時間;完成一次增加、刪除、修改或者查詢動作的事務響應時間等。

一個請求在網(wǎng)絡上的傳輸往往要經(jīng)歷多個網(wǎng)絡節(jié)點才能到達目標服務器,我們假設請求經(jīng)歷了三個網(wǎng)絡節(jié)點的傳輸時間B1、B2、B3,客戶端的處理時間為A,服務器的響應時間為C。則一次請求的完整路徑可以描述為下圖:

Linux性能測試之性能測試指標詳解

客戶端從發(fā)出請求到接收到服務器反饋的完整鏈路時間為A—>B1—>B2—>B3—>C(節(jié)點處理時間都包括接收和發(fā)送兩個過程)。則請求的響應時間為:

響應時間=A+B1+B2+B3+C

1.2 并發(fā)

并發(fā)是指多個用戶在同一時期內進行相同的事務處理或操作。由于用戶在進行一系列操作流程時有一定的時間間隔(即用戶思考時間)或者服務器處理請求有先后順序,于是,就產(chǎn)生了絕對并發(fā)和相對并發(fā)概念的區(qū)分。

絕對并發(fā)是指同一時刻(即同一時間點)并發(fā)用戶對服務器同時發(fā)送請求。

相對并發(fā)是指一段時間內(即同一時間區(qū)間)并發(fā)用戶對服務器發(fā)送請求。

舉個例子,一個并發(fā)量為10000人(可同時容納10000人)的動物園,這里的并發(fā)量是指絕對并發(fā)還是相對并發(fā)呢?我們很容易理解,這個并發(fā)指的是相對并發(fā),因為整個動物園是一個交織的網(wǎng)狀結構,出入口、老虎、獅子、大象等各個動物站點都有分流的作用,基本不可能出現(xiàn)出入口或者站點能夠同時承載10000人的情況,出入口的并發(fā)可能只有200人。

因此這個動物園的例子里,并發(fā)量10000是指各個節(jié)點的總和,參觀者參觀動物園有路徑的先后順序,是相對并發(fā)的概念。而出入口的并發(fā)量是200人,則是指同一時間在出入口能夠同時容納200人,這就是絕對并發(fā)的概念。

一般來說,在系統(tǒng)的性能測試中,系統(tǒng)或者模塊的并發(fā)更多是指相對并發(fā),而接口的并發(fā)更傾向于絕對并發(fā)。并發(fā)性能的概念是指系統(tǒng)、模塊或接口穩(wěn)定運行,不拋出異常情況下所能夠承載的并發(fā)量。

在并發(fā)性能測試中常用到并發(fā)用戶數(shù)和并發(fā)請求數(shù)兩個指標。顧名思義,并發(fā)用戶數(shù)是指同一時間(點或區(qū)間),系統(tǒng)、模塊或接口能夠承載的用戶數(shù)量;并發(fā)請求數(shù)是指同一時間(點或區(qū)間),系統(tǒng)、模塊或接口能夠承載的請求數(shù)量。

1.3 點擊量/點擊率

點擊量是衡量網(wǎng)站流量的一個指標,也就是點擊數(shù)clicks,是對網(wǎng)站點擊數(shù)據(jù)的統(tǒng)計。

點擊率(Clicks Ratio)也可以叫做點進率(“Click-through Rate),它是網(wǎng)站上某一內容被點擊的次數(shù)與整個網(wǎng)站內容被顯示次數(shù)之比,即clicks/views。反應了網(wǎng)站上某一頁面或內容的受關注程度,經(jīng)常用來衡量廣告的吸引程度。比如公眾號的一篇文章被瀏覽了10w次,文章中的廣告鏈接被點擊了2000次,那么這條廣告的點擊率是2%(2000/100000*100%)。

在性能測試領域,點擊率(hit rate)常指單位時間內(每秒鐘)頁面的點擊數(shù),即每秒鐘發(fā)送的http請求數(shù)量,點擊率越大對服務器造成的壓力也越大,對服務器的性能要求也越高。

有些人容易混淆點擊率和點擊量的概念,比如我們經(jīng)常會聽到有人說某網(wǎng)站的點擊率是多多萬,實際上這里的點擊率指的是點擊量,曝光率或者說頁面瀏覽量。

1.4 吞吐量/吞吐率

吞吐量是指系統(tǒng)處理客戶請求數(shù)量的總和,可以指網(wǎng)絡上傳輸數(shù)據(jù)包的總和,也可以指業(yè)務中客戶端與服務器交互數(shù)據(jù)量的總和。

吞吐率是指單位時間內系統(tǒng)處理客戶請求的數(shù)量,也就是單位時間內的吞吐量??梢詮亩鄠€維度衡量吞吐率:

  • 業(yè)務角度:單位時間(每秒)的請求數(shù)或頁面數(shù),即請求數(shù)/秒或頁面數(shù)/秒;
  • 網(wǎng)絡角度:單位時間(每秒)網(wǎng)絡中傳輸?shù)臄?shù)據(jù)包大小,即字節(jié)數(shù)/秒等;
  • 系統(tǒng)角度,單位時間內服務器所承受的壓力,即系統(tǒng)的負載能力。

吞吐率(或吞吐量)是一種多維度量的性能指標,它與請求處理所消耗的CPU、內存、IO和網(wǎng)絡帶寬都強相關。

1.5 TPS/QPS

TPS(Transaction Per Second)是指單位時間(每秒)系統(tǒng)處理的事務量。事務可以是用戶自定義的一系列操作或者動作的集合,比如“用戶注冊“事務是點擊注冊按鈕,填寫用戶注冊信息,點擊提交按鈕,以及加載注冊成功頁面的動作集合。

QPS(Query Per Second)是指單位時間內查詢或訪問服務器的次數(shù)。

TPS和QPS的區(qū)別在于一個事務可以包含多次查詢或訪問服務器,也可以只查詢或訪問一次服務器。當多次查詢或訪問時,一個TPS相當于多個QPS;當只查詢或訪問一次時,一個TPS則等價于一個QPS。

1.6 PV/UV

PV和UV是衡量web網(wǎng)站性能容量的兩個重要度量指標,經(jīng)常用在電子商務網(wǎng)站領域中用來衡量網(wǎng)站的活躍度。

PV(Page View)是頁面的瀏覽量或點擊量,用戶對系統(tǒng)或者網(wǎng)站任何頁面的每一次點擊或者訪問都會被記錄一次瀏覽量或點擊量,對相同頁面進行多次訪問瀏覽量或點擊量也會進行累計。

UV(Unique Vistor)是系統(tǒng)或者網(wǎng)站的獨立訪客,一段時間內相同客戶端(或PC)訪問系統(tǒng)或者網(wǎng)站只會被記錄一次,連續(xù)重復訪問或者瀏覽多個系統(tǒng)頁面次數(shù)不會進行累計。

PV和UV按照統(tǒng)計周期劃分,可以劃分為全天PV、每小時PV、全天UV和每小時UV等。在一些數(shù)據(jù)或交易量非常龐大的場景中,比如雙11或618等全民購物活動時,常常還會統(tǒng)計峰值PV和峰值UV。

二 Linux服務器性能指標

2.1 CPU使用率

CPU使用率是單位時間內服務器CPU的使用統(tǒng)計,可以用除CPU空閑時間外其他時間占總CPU時間的百分比來表示,即:CPU使用率=1-CPU空閑時間/總CPU時間

命令:#top //top工具間隔3s會動態(tài)滾動更新一次數(shù)據(jù)

Linux性能測試之性能測試指標詳解

字段說明:

us (user):用戶態(tài)的CPU使用時間比例,是用戶運行程序的真正時間,它不包括后面的ni時間;

sy (system): 內核態(tài)的CPU使用時間比例,是操作系統(tǒng)的運行時間,操作系統(tǒng)運行時,用戶運行程序往往處于等待狀態(tài);

ni (nice): 表示低優(yōu)先級用戶態(tài)的CPU時間比例,取值范圍為[-20,19],數(shù)值越大,則優(yōu)先級越低;

id (idle): 表示空閑的CPU時間比例,值越大,CPU空閑時間比例越高,利用率越低;

wa (iowait): 表示處于IO等待狀態(tài)的CPU時間比例;

hi (hard interrupt): 表示處理硬中斷的CPU時間比例;

si (soft interrupt): 與hi相反,表示處理軟中斷的CPU時間比例;

st (steal): 表示當前系統(tǒng)運行在虛擬機中被其他虛擬機占用的CPU時間比例。

在性能測試中,系統(tǒng)整體的CPU使用率可以用(1-id)來計算。當us很高時,說明CPU時間主要消耗在用戶代碼上,可以從用戶代碼角度考慮優(yōu)化性能;當sy很高時,說明CPU時間主要消耗在內核上,可以從是否系統(tǒng)調用頻繁、CPU進程或線程切換頻繁角度考慮性能的優(yōu)化;當wa很高時,說明有進程在進行頻繁的IO操作,可能是磁盤IO或者網(wǎng)絡IO。

一般情況下,如果%us+%sy<=70%,我們可以認為系統(tǒng)的運行狀態(tài)良好。

2.2 內存占用率

Linux的系統(tǒng)內存管理機制遵循內存利用率最大化的原則。內核會將空余的內存劃分為cached(不屬于free),對于有頻繁讀取操作的文件或數(shù)據(jù)會被保存在cached中。因此,對于linux系統(tǒng)來說,可用于分配的內存不止free的內存,同時還包括cached的內存(其實還包括buffers的內存)。

cached和buffers都屬于緩存,它們的區(qū)別主要在于cached主要用來緩沖頻繁讀取的文件,它可以直接記憶我們打開的文件內容;而buffers主要用來給塊設備做的緩沖大小,只記錄文件系統(tǒng)的metadata以及tracking in-flight pages信息,比如存儲目錄里面的內容,權限等。

top工具既可以查看系統(tǒng)CPU使用情況,也可以查看系統(tǒng)內存使用信息。

命令:#top

Linux性能測試之性能測試指標詳解

在性能測試中,經(jīng)常會用到系統(tǒng)已用內存、物理已用內存、系統(tǒng)內存占用率以及物理內存占用率這幾個指標,它們的計算公式如下:

系統(tǒng)已用內存MemUsed=MemTotal-MemFree //包含buffers和cached

物理已用內存-/+Used= MemTotal-MemFree-MemBuffers-MemCached

系統(tǒng)內存占用率MemUsed%=(MemUsed/ MemTotal)*100%

物理內存占用率-/+Used%=(-/+Used/ MemTotal)*100%

一般情況下,系統(tǒng)內存占用率<=70%,我們可以認為系統(tǒng)的內存使用情況良好,如果超出則說明系統(tǒng)內存資源緊張。

2.3 系統(tǒng)平均負載

當發(fā)現(xiàn)系統(tǒng)出現(xiàn)卡斷或者運行不順暢時,我們可以通過uptime,top或者w命令來查看系統(tǒng)的負載情況。

命令1:#uptime

Linux性能測試之性能測試指標詳解

命令2:#top

Linux性能測試之性能測試指標詳解

命令3:#w

Linux性能測試之性能測試指標詳解

Linux的load average表示系統(tǒng)負載的平均值,顯示的三個數(shù)值分別表示1分鐘、5分鐘和15分鐘內的平均負載情況。這里的平均負載是指單位時間內,系統(tǒng)處于可運行狀態(tài)和不可中斷狀態(tài)的平均進程數(shù),可以簡單的理解為平均負載就是系統(tǒng)平均活躍進程數(shù)。

其中可運行狀態(tài)是指正在使用CPU或者正在等待CPU的進程(處于R狀態(tài):Running或者Runnable的進程);不可中斷狀態(tài)的進程指的是正處于內核態(tài)關鍵流程中的進程,處于這個流程的進程是不可打斷的,比如等待硬件設備的I/O響應。

舉個例子,當平均負載的值為4:

對于只有1個CPU的系統(tǒng),意味著平均有3個進程競爭不到CPU;

對于擁有4個CPU的系統(tǒng),意味著CPU利用率為100%;

對于擁有8個CPU的系統(tǒng),意味著CPU利用率為50%,有一半空閑。

可以看出,當系統(tǒng)平均負載的值如果超過系統(tǒng)CPU的數(shù)量時,那么系統(tǒng)有可能會遇到性能瓶頸,要視具體情況而定。

在性能測試中,我們也經(jīng)常會通過比較1min、5min或者15min的值,來判斷系統(tǒng)平均負載的變化情況:

如果1min的值大于5min或者15min的值,說明負載在增加;

如果1min的值小于5min或者15min的值,說明負載在減??;

2.4 磁盤IO

Linux服務器性能除了CPU和內存外,還有磁盤IO也是一種常用的性能指標。

命令:#iostat –x –k 2 3 //每隔2S輸出磁盤IO的使用情況,共采樣3次

Linux性能測試之性能測試指標詳解

通過ll /dev/mapper命令可以查看dm-x與磁盤邏輯卷的映射關系;

Linux性能測試之性能測試指標詳解

字段說明:

rrqm/s: 每秒對該設備的讀請求被合并次數(shù),文件系統(tǒng)會對讀取同塊(block)的請求進行合并;

wrqm/s: 每秒對該設備的寫請求被合并次數(shù);

r/s: 每秒完成的讀次數(shù);

w/s: 每秒完成的寫次數(shù);

rkB/s: 每秒讀數(shù)據(jù)量(kB為單位);

wkB/s: 每秒寫數(shù)據(jù)量(kB為單位);

avgrq-sz:平均每次IO操作的數(shù)據(jù)量(扇區(qū)數(shù)為單位);

avgqu-sz: 平均等待處理的IO請求隊列長度;

await: 平均每次IO請求等待時間(包括等待時間和處理時間,毫秒為單位);

svctm: 平均每次IO請求的處理時間(毫秒為單位);

%util: 采用周期內用于IO操作的時間比率,即IO隊列非空的時間比率;

在性能測試中,我們可以重點關注iowait%和%util參數(shù)。其中iowait% 表示CPU等待IO時間占整個CPU周期的百分比,如果iowait值超過50%,或者明顯大于%system、%user以及%idle,表示IO可能存在問題了;%util表示磁盤忙碌的情況,一般%util<=70%表示該磁盤IO使用狀態(tài)良好。

版權聲明:文章圖片資源來源于網(wǎng)絡,如有侵權,請留言刪除!!!
廣告也精彩
admin
  • 本文由 發(fā)表于 2022年12月23日 13:44:00
  • 轉載請務必保留本文鏈接:http://yudch.cn/9628.html
匿名

發(fā)表評論

匿名網(wǎng)友 填寫信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: