性能拐點


分析性能測試結果圖

正常情況下,並發越多,頁面點擊數(服務器每秒處理請求的能力),吞吐(服務器每秒返回數據量),tps(每秒通過的業務量)同步提高
遇到性能瓶頸時,並發越多,頁面點擊,吞吐,事務關系開始不同步,並開始出錯情況,這種不同步情況就是拐點

首先並發上入手,如果並發很小情況下,比如就10個並發,指標上不去,很可能和網絡帶寬有關系,壓測時候最好在局域網內部壓測,這樣可以忽略網絡問題,不過就算內部網絡,同時也要注意是否被其他人占用或者網管限速情況

其次,測試服務器性能有關系了,可以到服務器打開資源管理器,一般linux系列,直接到命令行用 top -c 可以准確看到具體程序資源占用情況,有的公司硬件自身配置比較低,或者部署了一堆軟件,被壓測應用性能肯定會受影響,有時候僅僅多分配些內存,程序的指標就能提高, 所以在不同軟硬件環境下出現拐點位置都不太一樣

最后,可以從程序自身優化入手,這時候需要分析壓測的每個事物指標對應的時間結果,如果一個事物里面有5個接口,其中一個接口返回時間比較長,可以讓開發針對該接口做程序優化,也是性能測試報告最后的重點。

 圖中的3條曲線,分別表示資源的利用情況(Utilization,包括硬件資源和軟件資源)、吞吐量(Throughput,這里是指每秒事務數)以及響應時間(Response Time)。

曲線圖主要分為3個區域,分別是:light load :輕壓力區;heavy load :重壓力區;和bockle load 。

圖中坐標軸的橫軸從左到右表現了並發用戶數(Number of Concurrent Users)的不斷增長。

在進行性能測試的時候,我們需要對圖中曲線進行分析。分開來看的時候,相應時間(RT)、吞吐量(TPS)和資源利用率的變化情況分別是:

響應時間:隨着並發用戶數的增加,在前兩個區,響應時間基本平穩,小幅遞增。在第三個區域:急劇遞增。在第三個區的點為拐點。

吞吐量:隨着並發用戶數的增加,在前兩個區,對於一個良好的系統來說,並發用戶數的增加,請求增加,吞吐量增加,中間的區域,處理達到頂點。

資源利用率:在第三個區呈直線,表示飽和。

3條曲線合起分析:吞吐量下降,出現排隊現象,服務器宕機,響應時間越來越大。 

整體的分析思路:

當系統的負載等於最佳並發用戶數時,系統的整體效率最高,沒有資源被浪費,用戶也不需要等待;

當系統負載處於最佳並發用戶數和最大並發用戶數之間時,系統可以繼續工作,但是用戶的等待時間延長,滿意度開始降低,並且如果負載一直持續,將最終會導致有些用戶無法忍受而放棄;

而當系統負載大於最大並發用戶數時,將注定會導致某些用戶無法忍受超長的響應時間而放棄。

如何去尋找性能負載測試中的拐點

1.逐步逼近法

先設定一個預估值進行測試,觀察系統的響應情況,然后增加一定的數量,觀察系統的變化,直到系統超出我們所預估的值。

比如,在並發測試的時候,我們先預估設置並發用戶為2000,然后以200的速度遞增,檢查系統的響應時間是否小與3秒,從而找出並發測試的系統拐點,數據如下:

 。。。。。。

 

設置並發數為5000的時候,系統響應時間為3.14秒,超出了可接受范圍,不繼續增加了,在5000到4800中尋找一個中間值4900進行測試,測試結果為2.94秒,仍舊在可接受的范圍之內,尋找4900與5000中的中間點4950進行測試,得到2.99這個結果,非常接近3了,且兩次測量值的間隔在50之內(4950-5900=50)。

當我們對系統響應時間沒有或者無法預估的時候,我們也往往采取系統通過率是否在可接受范圍之內來評測。一般系統通過率可接受范圍 = 通過的事務數(Pass)/全體事務數(All) = 通過的事務數(Pass)/(通過的事務數(Pass)+錯誤事務數(Error)+失敗事務數(Fail))*100%,是否在95%以上(含95)。同樣我們拿上一個例子作為參考。

 。。。。。。

 在這里系統的拐點為7150(一般設置通過的事務數在可接受的范圍內,系統的拐點值回比其他方式高)。

2.二分逼近法

先預估兩個值m和n,其中m<n,取值公式為一個二元函數f (m,n)。

1.先用m來進行測試,如果測試不通過,我們可以確定,拐點值小於m,也可以說在0到m之間,所以我們以m/2 為a來作為最小值,重新遞歸二元函數f (m/2,n)即f(a,n)。

2.如果m通過測試了,我們就用n值來進行測試,如果n值測試不通過,我們可以確定拐點在m與n之間,於是取(m+n)/2作為k值,重新遞歸二元函數f((m+n)/2,n)即f(k,n)。

3.如果n值測試通過了,我們拐點比n大,找一個比n大的數字x,重新遞歸二元函數f (n,x)。

4.當最大值與最小值在500內,認為找到拐點

在這里我們用這個方法來檢查系統的響應時間是否小與3秒,從而找出並發測試的系統拐點。我們取初始的m為1000,n為5000,即f (1000, 5000)

 

 認為拐點值為4969,與第一次方法獲得的值4950應該比較接近。在第一種方法中我們測試了18步,而采用這種方法僅僅用了8步。

對於並發測試,拐點是不太明晰的,所以第一次找到拐點的時候最好做二到三次的確認。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM