效能專題:一文搞懂效能測試常見指標
1. 前言
上週,對效能測試系列專題,在公號內發表了第一篇介紹:【效能系列連載一】開篇:效能測試不可不知的“乾貨”,但反響貌似並不太好,但既然此前已答應了部分讀者要連載分享效能這塊的知識,含著淚也得繼續寫。
效能測試的基礎:就是在確保功能實現正確的前提下,通過合適的效能測試加壓方式和策略,並收集考察服務端應用程式的各項效能指標,以及伺服器硬體資源的使用情況,來評估是否存在效能問題隱患。
那今天作為效能測試系列的第二篇,主要會為大家介紹在服務端效能測試中,常見的效能指標有哪些。
2. 效能指標分類
從效能測試分析度量的度角來看,可以從如下幾個維度來收集考察各項效能指標:
- 系統性能指標
- 資源效能指標
- 中介軟體指標
- 資料庫指標
- 穩定性指標
- 可擴充套件性指標
- 可靠性指標
下面將從如上這幾個維度,分別從各自維度常見指標,以及指標含義、指標行業參考標準等方面進行介紹。
3. 系統性能指標
系統性能指標,常見的可從如下幾類進行參考:
- 響應時間
- 系統處理能力
- 吞吐量
- 併發使用者數
- 錯誤率
3.1 響應時間
定義和解釋:響應時間,簡稱RT。是指系統對請求作出響應的時間,可以理解為是指使用者從客戶端發起一個請求開始,到客戶端接收到從伺服器端返回的響應結束,整個過程所耗費的時間。直觀上看,這個指標與人對軟體效能的主觀感受是非常一致的,因為它完整地記錄了整個計算機系統處理請求的時間。
在效能檢測中一般以壓力發起端至被壓測伺服器返回處理結果的時間為計量,單位一般為秒或毫秒,由於一個系統通常會提供許多功能,而不同功能的處理邏輯也千差萬別,因而不同功能的響應時間也不盡相同,甚至同一功能在不同輸入資料的情況下響應時間也不相同。所以,在討論一個系統的響應時間時,通常是指該系統所有功能的平均時間或者所有功能的最大響應時間。
行業參考標準:
不同行業不同業務可接受的響應時間是不同的,一般情況,對於線上實時交易:
- 網際網路企業:500毫秒以下,例如淘寶業務10毫秒左右。
- 金融企業:1秒以下為佳,部分複雜業務3秒以下。
- 保險企業:3秒以下為佳。
- 製造業:5秒以下為佳。
- 時間視窗:不同資料量結果是不一樣的,大資料量的情況下,2小時內完成。
需要指出的是,響應時間的絕對值並不能直接反映軟體的效能的高低,軟體效能的高低實際上取決於使用者對該響應時間的接受程度。
3.2 系統處理能力
定義和解釋:系統處理能力是指系統在利用系統硬體平臺和軟體平臺進行資訊處理的能力。系統處理能力通過系統每秒鐘能夠處理的交易數量來評價,交易有兩種理解:一是業務人員角度的一筆業務過程;二是系統角度的一次交易申請和響應過程。前者稱為業務交易過程,後者稱為事務。兩種交易指標都可以評價應用系統的處理能力。
一般情況下,系統處理能力又用以下幾個指標來度量:
- HPS(Hits Per Second) :每秒點選次數,單位是次/秒。
- TPS(Transaction per Second):系統每秒處理交易數,單位是筆/秒。
- QPS(Query per Second):系統每秒處理查詢次數,單位是次/秒。
對於網際網路業務中,如果某些業務有且僅有一個請求連線,那麼TPS=QPS=HPS,一般情況下用TPS來衡量整個業務流程,用QPS來衡量介面查詢次數,用HPS來表示對伺服器點選請求。
行業參考標準:
無論TPS、QPS、HPS,此指標是衡量系統處理能力非常重要的指標,越大越好,根據經驗,一般情況下:
- 金融行業:1000TPS~50000TPS,不包括網際網路化的活動
- 保險行業:100TPS~100000TPS,不包括網際網路化的活動
- 製造行業:10TPS~5000TPS
- 網際網路電子商務:10000TPS~1000000TPS
- 網際網路中型網站:1000TPS~50000TPS
- 網際網路小型網站: 500TPS~10000TPS
3.3 吞吐量
定義和解釋:吞吐量是指系統在單位時間內處理請求的數量。
對於單使用者的系統,響應時間可以很好地度量系統的效能,但對於併發系統,通常需要用吞吐量作為效能指標。
而對於一個多使用者的系統,如果只有一個使用者使用時系統的平均響應時間是t,當有你n個使用者使用時,每個使用者看到的響應時間通常並不是n×t,而往往比n×t小很多(當然,在某些特殊情況下也可能比n×t大,甚至大很多)。一般而言,吞吐量是一個比較通用的指標,兩個具有不同使用者數和使用者使用模式的系統,如果其最大吞吐量基本一致,則可以判斷兩個系統的處理能力基本一致。
3.4 併發使用者數
定義和解釋:併發使用者數指在同一時刻內,登入系統並進行業務操作的使用者數量。
併發使用者數對於長連線系統來說最大併發使用者數即是系統的併發接入能力。對於短連線系統而言最大併發使用者數並不等於系統的併發接入能力,而是與系統架構、系統處理能力等各種情況相關。
與吞吐量相比,併發使用者數是一個更直觀但也更籠統的效能指標。實際上,併發使用者數是一個非常不準確的指標,因為使用者不同的使用模式會導致不同使用者在單位時間發出不同數量的請求。
3.5 錯誤率
定義和解釋:錯誤率簡稱FR,指系統在負載情況下,失敗交易的概率。錯誤率=(失敗交易數/交易總數)*100%。
行業參考標準:
不同系統對錯誤率的要求不同,但一般不超出千分之六,即成功率不低於99.4%
4. 資源效能指標
資源效能指標,常見的可從如下幾類進行參考:
- CPU
- 記憶體
- 磁碟吐吞量
- 網路吐吞量
4.1 CPU
定義和解釋:CPU又稱為中央處理器,是一塊超大規模的積體電路,是一臺計算機的運算核心(Core)和控制核心( Control Unit)。它的功能主要是解釋計算機指令以及處理計算機軟體中的資料。
行業參考標準:
CPU指標主要指的CPU利用率,包括使用者態(user)、系統態(sys)、等待態(wait)、空閒態(idle)。
- CPU 利用率要低於業界警戒值範圍之內,即小於或者等於75%;
- CPU sys%小於或者等於30%;
- CPU wait%小於或者等於5%;
4.2 記憶體
定義和解釋:記憶體是計算機中重要的部件之一,它是與CPU進行溝通的橋樑。計算機中所有程式的執行都是在記憶體中進行的,因此記憶體的效能對計算機的影響非常大。
行業參考標準:
現在的作業系統為了最大利用記憶體,在記憶體中存放了快取,因此記憶體利用率100%並不代表記憶體有瓶頸,衡量系統記憶體是否有瓶頸主要靠SWAP(與虛擬記憶體交換)交換空間利用率,一般情況下,SWAP交換空間利用率要低於70%,太多的交換將會引起系統性能低下。
4.3 磁碟吐吞量
定義和解釋:磁碟吞吐量簡稱為Disk Throughput,是指在無磁碟故障的情況下單位時間內通過磁碟的資料量。
行業參考標準:
磁碟指標主要有每秒讀寫多少兆,磁碟繁忙率,磁碟佇列數,平均服務時間,平均等待時間,空間利用率。其中磁碟繁忙率是直接反映磁碟是否有瓶頸的的重要依據,一般情況下,磁碟繁忙率要低於70%。
4.4 網路吐吞量
定義和解釋:網路吞吐量簡稱為Network Throughput,是指在無網路故障的情況下單位時間內通過的網路的資料數量。單位為Byte/s。網路吞吐量指標用於衡量系統對於網路裝置或鏈路傳輸能力的需求。當網路吞吐量指標接近網路裝置或鏈路最大傳輸能力時,則需要考慮升級網路裝置。
行業參考標準:
網路吞吐量指標主要有每秒有多少兆流量進出,一般情況下不能超過裝置或鏈路最大傳輸能力的70%。
5. 中介軟體指標
常用的中介軟體例如Tomcat、Weblogic等指標主要包括JVM, ThreadPool, JDBC,具體如下:
一級指標 |
二級指標 |
單位 |
解釋 |
---|---|---|---|
GC |
GC頻率 |
每秒多少次 |
java虛擬機器垃圾部分回收頻率 |
GC |
Full GC頻率 |
每小時多少次 |
java虛擬機器垃圾完全回收頻率 |
GC |
Full GC平均時長 |
秒 |
用於垃圾完全回收的平均時長 |
GC |
Full GC最大時長 |
秒 |
用於垃圾完全回收的最大時長 |
GC |
堆使用率 |
百分比 |
堆使用率 |
ThreadPool |
Active Thread Count |
個 |
活動的執行緒數 |
ThreadPool |
Pending User Request |
個 |
處於排隊的使用者請求個數 |
JDBC |
JDBC Active Connection |
個 |
JDBC活動連線數 |
行業參考標準:
- 當前正在執行的執行緒數不能超過設定的最大值。一般情況下系統性能較好的情況下,執行緒數最小值設定50和最大值設定200比較合適。
- 當前執行的JDBC連線數不能超過設定的最大值。一般情況下系統性能較好的情況下,JDBC最小值設定50和最大值設定200比較合適。
- GC頻率不能頻繁,特別是FULL GC更不能頻繁,一般情況下系統性能較好的情況下,JVM最小堆大小和最大堆大小分別設定1024M比較合適。
6. 資料庫指標
常用的資料庫例如MySQL指標主要包括SQL、吞吐量、快取命中率、連線數等,具體如下:
一級指標 |
二級指標 |
單位 |
解釋 |
---|---|---|---|
SQL |
耗時 |
微秒 |
執行SQL耗時 |
吞吐量 |
QPS |
個 |
每秒查詢次數 |
吞吐量 |
TPS |
個 |
每秒事務次數 |
命中率 |
Key Buffer命中率 |
百分之 |
索引緩衝區命中率 |
命中率 |
InnoDB Buffer命中率 |
百分比 |
InnoDB緩衝區命中率 |
命中率 |
Query Cache命中率 |
百分比 |
查詢快取命中率 |
命中率 |
Table Cache命中率 |
百分比 |
表快取命中率數 |
命中率 |
Thread Cache命中率 |
百分比 |
執行緒快取命中率 |
鎖 |
等待次數 |
次 |
鎖等待次數 |
鎖 |
等待時間 |
微秒 |
鎖等待時間 |
行業參考標準:
- SQL耗時越小越好,一般情況下微秒級別。
- 命中率越高越好,一般情況下不能低於95%。
- 鎖等待次數越低越好,等待時間越短越好。
7. 穩定性指標
最短穩定時間:系統按照最大容量的80%或標準壓力(系統的預期日常壓力)情況下執行,能夠穩定執行的最短時間。
一般來說,對於正常工作日(8小時)執行的系統,至少應該能保證系統穩定執行8小時以上。
對於7*24執行的系統,至少應該能夠保證系統穩定執行24小時以上。如果系統不能穩定的執行,上線後,隨著業務量的增長和長時間執行,將會出現效能下降甚至崩潰的風險。
參考標準:
- TPS曲線穩定,沒有大幅度的波動。
- 各項資源指標沒有洩露或異常情況。
8. 可擴充套件性指標
定義和解釋:是指應用軟體或作業系統以群集方式部署,增加的硬體資源與增加的處理能力之間的關係。
計算公式為:(增加效能/原始效能)/(增加資源/原始資源)*100%。
擴充套件能力應通過多輪測試獲得擴充套件指標的變化趨勢。一般擴充套件能力非常好的應用系統,擴充套件指標應是線性或接近線性的,現在很多大規模的分散式系統的擴充套件能力非常好。
參考標準:
理想的擴充套件能力是資源增加幾倍,效能就提升幾倍。擴充套件能力至少在70%以上。
9. 可靠性指標
對於服務端效能測試,從系統可靠性指標度量分析時,常見從三類來入手:
- 雙機熱備
- 叢集
- 備份和恢復
9.1 雙機熱備
對於將雙機熱備作為可靠性保障手段的系統,可衡量的指標如下:
- 節點切換是否成功及其消耗時間。
- 雙機切換是否有業務中斷。
- 節點回切是否成功及其耗時。
- 雙機回切是否有業務中斷。
- 節點回切過程中的資料丟失量在進行雙機切換的同時,使用壓力發生工具模擬實際業務發生情況,對應用保持一定的效能壓力,保證測試結果符合生產實際情況。
9.2 叢集
對於使用叢集方式的系統,主要通過以下方式考量其叢集可靠性:
- 叢集中某個節點出現故障時,系統是否有業務中斷情況出現
- 在叢集中新增一個節點時,是否需要重啟系統
- 當故障節點恢復後,加入叢集,是否需要重啟系統
- 當故障節點恢復後,加入叢集,系統是否有業務中斷情況出現
- 節點切換需要多長時間在驗證叢集可靠性的同時,需根據具體情況使用壓力工具模擬實際業務發生相關情況,對應用保持一定的效能壓力,確保測試結果符合生產實際情況。
9.3 備份和恢復
本指標為了驗證系統的備份/恢復機制是否有效可靠,包括系統的備份和恢復、資料庫的備份和恢復、應用的備份和恢復,包括以下測試內容:
- 備份是否成功及其消耗時間。
- 備份是否使用指令碼自動化完成。
- 恢復是否成功及其消耗時間。
- 恢復是否使用指令碼自動化完成指標體系的運用原則。
- 指標項的採用和考察取決於對相應系統的測試目的和測試需求。被測系統不一樣,測試目的不一樣,測試需求也不一樣,考察的指標項也有很大差別。
- 部分系統涉及額外的前端使用者接入能力的,需要考察使用者接入併發能力指標。
- 對於批量處理過程的效能驗證,主要考慮批量處理效率並估算批量處理時間視窗。
- 如測試目標涉及到系統性能容量,測試需求中應根據相關指標項的定義,明確描述效能指標需求。
- 測試指標獲取後,需說明相關的前提條件(如在多少的業務量、系統資源情況等)。
其中上述提到的【可擴充套件指標】和【可靠性指標】,大多數公司在開展效能測試的時候很少會涉及到這些測試點,但這些點從產品整體效能和質量角度來講,又是不得不關注的一些重點,算是給大家提供一些測試思路。
最後,關注公眾號「測試開發技術」,並後臺回覆me, 可掃碼新增作者個人微訊號,免費領取《敏捷效能測試分析與規劃效能測試》《網際網路效能測試案例及經驗分享》。
點選可閱讀原文:
更多幹貨,請掃描關注【測試開發技術】