性能專題:一文搞懂性能測試常見指標

  • 2019 年 11 月 4 日
  • 筆記

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, 可掃碼添加作者個人微訊號,免費領取《敏捷性能測試分析與規劃性能測試》《互聯網性能測試案例及經驗分享》。

點擊可閱讀原文

更多乾貨,請掃描關注【測試開發技術】