1. 程式人生 > 實用技巧 >效能測試---效能測試指標

效能測試---效能測試指標

一、什麼是效能測試?

壓力測試:強調極端暴力
穩定性測試:在一定壓力下,長時間執行的情況
基準測試:在特定條件下的效能測試
負載測試:不同負載下的表現
容量測試:最優容量

不同人群關注的效能指標各有側重。後臺服務介面的呼叫者一般只關心吞吐量、響應時間等外部指標。後臺服務的所有者不僅僅關注外部指標,還會關注CPU、記憶體、負載等內部指標。

拿某打車平臺來說,它所關心的是智慧提示的外部指標能不能抗住因大波優惠所導致的流量激增。而對於智慧提示服務的開發、運維、測試人員,不僅僅關注外部指標,還會關注CPU、記憶體、IO等內部指標,以及部署方式、伺服器軟硬體配置等運維相關事項

二、效能測試外部指標

  吞吐量

:每秒鐘系統能夠處理的請求數、任務數

  響應時間 :服務處理一個請求或一個任務的耗時

  錯誤率:一批請求中結果出錯的請求所佔比例

  

  1、響應時間的指標取決於具體的服務。如智慧提示一類的服務,返回的資料有效週期短(使用者多輸入一個字母就需要重新請求),對實時性要求比較高,響應時間的上限一般在100ms以內。而導航一類的服務,由於返回結果的使用週期比較長(整個導航過程中),響應時間的上限一般在2-5s。

對於響應時間的統計,應從均值、.90、.99、分佈等多個角度統計,而不僅僅是給出均值。

 下圖是響應時間統計的一個例子

   

  2、吞吐量的指標受到響應時間、伺服器軟硬性配置、網路狀態等多方面影響的影響。

  吞吐量越大,響應時間越長。

  伺服器硬體配置越高,吞吐量越大。

  網路越差,吞吐量越小。

  

  一個系統的吞度量(承壓能力)與request對CPU的消耗、外部介面、IO等等緊密關聯。

  單個reqeust對CPU消耗越高,外部系統介面、IO影響速度越慢,系統吞吐能力越低,反之越高。

  

  系統吞吐量幾個重要引數:QPS(TPS)、併發數、響應時間

QPS(TPS):每秒鐘request/事務數量

併發數:系統同時處理的request/事務數

響應時間:一般取平均響應時間

  它們之間的關係:

  QPS(TPS)=併發數/平均響應時間

  

  一個系統吞吐量通常由QPS(TPS)、併發數

兩個因素決定,每套系統這兩個值都有一個相對極限值,在應用場景訪問壓力下,只要某一項達到系統最高值,系統的吞吐量就上不去了,如果壓力繼續增大,系統的吞吐量反而會下降,原因是系統超負荷工作,上下文切換、記憶體等等其它消耗導致系統性能下降。

 

  在低吞吐量下的響應時間的均值、分佈比較穩定,不會產生太大的波動。

  在高吞吐量下,響應時間會隨著吞吐量的增長而增長,增長的趨勢可能是線性的,也可能接近指數的。當吞吐量接近系統的峰值時,響應時間會出現激增。

  3、錯誤率和服務的具體實現有關。通常情況下,由於網路超時等外部原因造成的錯誤比例不應超過5%%,由於服務本身導致的錯誤率不應超過1% 。

三、效能測試內部指標

  從伺服器的角度看,效能測試主要關注CPU、記憶體、伺服器負載、網路、磁碟IO等

  1、CPU:

  後臺服務的所有指令和資料處理都是由CPU負責,服務對CPU的利用率對服務的效能起著決定性的作用。

  Linux系統的CPU主要有如下幾個維度的統計資料:

  us:使用者態使用的cpu時間百分比

  sy:核心態使用的cpu時間百分比

  ni:用做nice加權的程序分配的使用者態cpu時間百分比

  id:空閒的cpu時間百分比

  wa: cpu等待IO完成時間百分比

  si:軟中斷消耗時間百分比

  

us & sy:大部分後臺服務使用的CPU時間片中us和sy的佔用比例是最高的。同時這兩個指標又是互相影響的,us的比例高了,sy的比例就低,反之亦然。通常sy比例過高意味著被測服務在使用者態和系統態之間切換比較頻繁,此時系統整體效能會有一定下降。另外,在使用多核CPU的伺服器上,CPU 0負責CPU各核間的排程,CPU 0上的使用率過高會導致其他CPU核心之間的排程效率變低。因此測試過程中CPU 0需要重點關注。

ni:每個Linux程序都有個優先順序,優先順序高的程序有優先執行的權利,這個叫做pri。程序除了優先順序外,還有個優先順序的修正值。這個修正值就叫做程序的nice值。一般來說,被測服務和伺服器整體的ni值不會很高。如果測試過程中ni的值比較高,需要從伺服器Linux系統配置、被測服務執行引數查詢原因

id:線上服務執行過程中,需要保留一定的id冗餘來應對突發的流量激增。在效能測試過程中,如果id一直很低,吞吐量上不去,需要檢查被測服務執行緒/程序配置、伺服器系統配置等。

wa:磁碟、網路等IO操作會導致CPU的wa指標提高。通常情況下,網路IO佔用的wa資源不會很高,而頻繁的磁碟讀寫會導致wa激增。如果被測服務不是IO密集型的服務,那需要檢查被測服務的日誌量、資料載入頻率等。

hi & si:硬中斷是外設對CPU的中斷,即外圍硬體發給CPU或者記憶體的非同步訊號就是硬中斷訊號;軟中斷由軟體本身發給作業系統核心的中斷訊號。通常是由硬中斷處理程式或程序排程程式對作業系統核心的中斷,也就是我們常說的系統呼叫(System Call)。在效能測試過程中,hi會有一定的CPU佔用率,但不會太高。對於IO密集型的服務,si的CPU佔用率會高一些。
View Code

  2、記憶體

  效能測試過程中對記憶體監控的主要目的是檢查被測服務所佔用記憶體的波動情況。

  在Linux系統中有多個命令可以獲取指定程序的記憶體使用情況,最常用的是top命令。