1. 程式人生 > >【轉】效能測試指標

【轉】效能測試指標

學習網站:

http://www.51testing.com/html/35/128935-243090.html

http://www.51testing.com/html/39/n-3711439-2.html

一、效能測試指標

效能測試是通過測試工具模擬多種正常、峰值及異常負載條件來對系統的各項效能指標進行測試。

目的:驗證軟體系統是否能夠達到使用者提出的效能指標,發現系統中存在的效能瓶頸並加以優化。

效能指標分為兩個方面:

系統指標(與使用者場景和需求相關指標)

資源指標(與硬體資源消耗相關指標)

系統指標說明

1.響應時間、平均響應時間

一個請求做出響應所需要的時間

響應時間=網路響應時間+應用程式響應時間=(N1+N2+N3+N4)+(A1+A2+A3)

 

平均響應時間:所有請求花費的平均時間

如:如果有100個請求,其中 98 個耗時為 1ms,其他兩個為 100ms

平均響應時間: (98 * 1 + 2 * 100) / 100.0 = 2.98ms,但是,2.98ms並不能反映伺服器的整體效率,因為98個請求耗時才1ms,引申出百分位數

百分位數:以響應時間為例,指的是 99% 的請求響應時間,都處在這個值以下,更能體現整體效率。

2.併發使用者數

併發主要是針對伺服器而言,在同一時刻與伺服器進行互動(指向伺服器發出請求)的線上使用者數。

線上使用者:指某段時間內,使用者訪問系統的使用者數,如多個使用者在瀏覽網頁,但沒有對同時對伺服器進行資料請求,需要與併發使用者數區分開。

併發使用者數C,計算公式C=nL/T

n:每天訪問系統的使用者數

L:線上使用者從登陸到退出的時間

T:使用者每天使用系統大概多長時間

峰值C1,即最大併發數,計算公式C1=C+³√C

注:理解最佳併發使用者數和最大併發使用者數

看了《LoadRunner沒有告訴你的》之理髮店模式,對最佳併發使用者數和最大的併發使用者數的理解小小整理了一下。

所謂的理髮店模式,簡單地闡述一下,一個理髮店有3個理髮師,當同時來理髮店的客戶有3個的時候,那麼理髮師的資源能夠有效地利用,這時3個使用者數即為最佳的併發使用者數;當理髮店來了9個客戶的時候,3個客戶理髮,而6個使用者在等待,3個客戶的等待時間為1個小時,另外的3個客戶的等待時間為2小時,客戶的最大忍受時間為3小時包括理髮的1個小時,所以6個客戶的等待時間都在客戶的可以承受範圍內,故9個客戶是該理髮店的最大併發使用者數。具體的隨著併發使用者數的增加,響應時間,吞吐量,資源利用情況如下圖所示:

Light Load(較輕壓力)-----最佳使用者數(資源利用最高)---(較重壓力,系統可以持續工作,但使用者等待時間較長,滿意度會下降)-----Heavy Load-------最大併發使用者數--------Buckle Zone(使用者無法忍受而放棄請求)

最佳併發使用者數:當系統的負載等於最佳併發使用者數時,系統的整體效率最高,沒有資源被浪費,使用者也不需要等待
最大併發使用者數:系統的負載一直持續,有些使用者在處理而有的使用者在自己最大的等待時間內等待的時候

我們需要保證的是:

(1)最佳併發使用者數需大於系統的平均負載

(2)系統的最大併發使用者數要大於系統需要承受的峰值負載

怎麼理解這兩句話呢?

(1)系統的平均負載:在特定的時間內,系統正在處理的使用者數和等待處理的使用者數的總和

如果系統的平均負載大於最佳併發使用者數,則使用者的滿意度會下降,所以我們需要保證系統的平均負載小於或者等於最佳併發使用者數

(2)峰值:指的是系統的最大能承受的使用者數的極值

只有最大併發使用者數的大於系統所能承受的峰值負載,才不會造成等待空間資源的浪費,導致系統的效率低下

3.吞吐量、吞吐率

衡量網路效能的重要指標

吞吐量:網路傳輸的資料量(處理客戶的請求數)

吞吐率:單位時間(可以是秒/分/時/天)內網路成功傳輸的資料量,如請求數/秒、頁面數/秒

4.事務,TPS(Transaction Per Second)每秒事務數

事務:可以看作是一個動作或是一系列動作的集合,例如登入,從登入開始到登入結束為一個事務。

TPS:衡量系統處理事務或交易的能力,即伺服器對客戶請求的能力,每秒處理的事務數,一般在LoadRunner上使用,設定事務,然後統計單位時間內系統可以成功完成多少個定義的事務。

5.點選量、點選率(Hits Per Second)

點選數:指Web Server收到的HTTP請求數。

點選率:單位時間每秒使用者向Web Server提交的HTTP請求數。

區分滑鼠點選數:如請求一個網頁,網頁含有3張圖片,向Web Server請求的點選數:1+3=4,而滑鼠的一次點選就可以訪問網頁,點選數只有1次

 

資源指標說明

1.硬體效能指標:CPU,記憶體Memory,磁碟I/O(Disk I/O),網路I/O(Network I/O)

CPU:主要解釋計算機指令以及處理計算機軟體中的資料

Linux系統中top命令檢視CPU的使用率

CPU的利用率(<=75%)有:user(使用者使用),sys(系統呼叫<=30%),wait(等待<=5%),idle(空閒)

user消耗高時,通過top命令檢視哪個使用者程序佔用cpu的使用

user消耗過高的原因可能有:

(1)程式碼問題。如程式碼中耗時迴圈中不加sleep,即例如while的死迴圈中,沒有加sleep時間,導致沒有空餘的時間將cpu的控制權給其他的程序,一直陷入該死迴圈中,cpu得不到休息,所以usr的消耗過高,則cpu的消耗高

(2)gc頻繁。gc則為垃圾回收,由於垃圾回收也是需要大量的計算,也消耗cpu,所以當gc頻繁時也導致usr使用者空間的消耗也過高,cpu消耗過高

當sys消耗高時,通過top命令檢視系統呼叫資源的情況

sys消耗過高的原因可能有:
(1)上下文切換頻繁。上下文切換髮生的情況有:中斷處理,多工處理,使用者狀態改變。

中斷處理,當cpu停止處理當前的程序轉而處理中斷請求的程序時發生上下文切換。多工處理則為有多個程序請求cpu的處理,程序的數量多於cpu的核數,則分配程序時間片,根據時間片處理程序,意味著會強制停止一個程序而去處理另一個程序,形成頻繁的上下文切換。使用者狀態改變則為user狀態與sys狀態的改變。

wait較高時,即等待的程序佔比高則可以考慮是否磁碟讀寫,磁碟瓶頸問題, 等待的程序較多時,cpu無論如何切換都是切換到等待的程序,導致cpu一直在頻繁切換等待的執行緒而利用率較低

記憶體:與cpu溝通的橋樑,計算機中所有程式的執行都在記憶體中進行,記憶體分為實體記憶體、頁面交換(Paging),SWAP記憶體(虛擬記憶體)

頁面交換:當實體記憶體即實際的記憶體滿了的時候,將實體記憶體中不常用的程序調出儲存到虛擬記憶體中,以緩解實體記憶體空間的壓力,所以當實體記憶體與虛擬記憶體的資料交換頻繁的時候,這時候就要關注下記憶體的效能情況。

SWAP記憶體:為程序分配虛擬的記憶體空間,即呼叫硬碟的空間作為記憶體使用。

記憶體的效能分析是又可用記憶體與頁面交換來分析的,可用記憶體使用佔70%-80%為上限,當超出這個數值,記憶體效能情況就比較危險,而且即使可用記憶體使用不超過80%的數值時,頁面交換比較頻繁時,也是要關注下記憶體情

一般實體記憶體即使是滿記憶體也不能代表記憶體出現問題,主要是看虛擬記憶體swap,虛擬記憶體應該<=70%,大於則可以考慮是否記憶體問題或者記憶體洩漏

磁碟吞吐量,指單位時間內通過磁碟的資料量。主要關注磁碟的繁忙率,如果高於70%,則磁碟瓶頸

網路吞吐量,指單位時間內通過網路的資料量,當吞吐量大於網路裝置或鏈路最大傳輸能力,即頻寬時,則應該考慮升級網路裝置或者增加頻寬,Linux命令netstate

網路IO也有可能出現終止連線失敗。例如當服務端出現大量的TIME_WAIT,見以下TCP終止連線的第4個步驟,在主動發起關閉連線方接收到結束符FIN時狀態變為TIME_WAIT,這時在服務端發現大量的TIME_WAIT,意味著關閉連線是由服務端發起的。

問?什麼情況是由服務端發起關閉連線?答:在使用者端的應用程式忘記關閉連線

另外如果在服務端發現大量狀態CLOSE_WAIT,則說明第二次關閉回不去,也就是TCP關閉連線的第三個步驟沒有執行,停留在CLOSE_WAIT的狀態,瀏覽器如果這時發起請求則會返回超時連線,因為服務端這邊一直無法進行第二次關閉,將結束符返回去給使用者端。
注:普及TCP連線的三次握手,終止連線的四次握手

TCP三次握手連線:

(1)使用者端傳送SYN給伺服器,使用者端的狀態為SYN_SEND

(2)服務端接收到後傳送ACK給使用者端,服務端的狀態為SYN_RECV

(3)使用者端接收到服務端傳送過來的後傳送了ACK給服務端,使用者端的狀態變為Estabilished

TCP終止連線:

(1)使用者端的應用主動發起關閉連線,即應用呼叫close傳送FIN給服務端

(2)服務端接收到FIN後傳送ACK給使用者端,服務端的狀態變為CLOSE_WAIT

(3)服務端傳送ACK給使用者端的同時也將FIN作為一個檔案結束符傳遞給接收端應用程式

(4)使用者端的應用程式接收到FIN後將呼叫close關閉它的套接字,確認FIN,這時使用者端的狀態變為TIME_WAIT

(5)使用者端傳送ACK回執給服務端,連線終止

2.中介軟體:常用的中介軟體例如web伺服器Tomcat,Weblogic web伺服器,JVM(java虛擬機器),ThreadPool執行緒池,JDBC資料驅動

注:http伺服器和web伺服器與應用伺服器的差別是一個儲存靜態網頁的伺服器,一個是儲存css,js等動態載入網頁的伺服器,而tomcat則屬於應用伺服器

注:對中介軟體例如對伺服器的效能測試,需要將監控的jmeter-server的檔案下載在服務端上,然後開啟即可監控被測伺服器的效能,或者將監控的軟體下載在被測伺服器上,遠端啟動監控軟體等

3.資料庫指標

應關注SQL,吞吐量,快取命中率,連線數等,則是關注sql語句執行時間,以微妙為單位,吞吐量TPS,快取命中率應>=95%

注:對資料庫的效能測試通過jemter利用批量的sql語句對資料庫進行操作,從而測試資料庫的效能,前提是需要將jdbc的驅動載入在測試計劃新增的驅動檔案中,然後新增jdbc的前置處理器和jdbc的請求sample。

4.JVM,java虛擬機器,為使java的程式碼可以編譯執行在不同的平臺上順暢,模擬模擬各種計算機來實現

GC:自動記憶體管理程式,被引用的物件儲存在記憶體中,當物件不被引用時則釋放。關注的引數有Full GC完全java虛擬機器垃圾部分回收頻率

5.前端指標

前端應該關注頁面展示,即首次顯示時間,頁面數量,頁面大小,網路startRender,firstRender等

注:關注前端的效能與後端的效能的不同點在於,前端是每個使用者的直觀的感受,以及前端頁面的載入元素耗費時間給予使用者的感受,而後端的效能關注點在於多使用者使用系統時,伺服器是否能夠承受或者伺服器的處理能力如何,能否以較好的響應時間響應。

6.Load:系統平均負載,特定時間間隔內執行程序數,Load與cpu核數一致