性能測試概念及參數介紹


一  性能測試是什么?

網上有很多,要說概念就得先說分類,性能測試,壓力測試,負載測試,容量測試...在我看來,只是根據不同的測試目的(即想要達成的結果)而取的不同名字,手段都是一樣的,不外乎模擬並發用戶來訪問系統,通過分析得到的參數評估系統性能

我覺得對於性能測試比較簡單的概括是:性能測試分為前端性能和后端性能。

我狹義的認為前端性能主要表現在頁面加載上:一般會通過優化加載方式,減少數據傳輸量等方式進行優化。

后端性能就是通俗意義上我所做的性能測試,跟代碼和機器性能有關,所以報告中通常需要標注測試環境。

二 性能測試的目的是什么?

1 驗收是否滿足性能指標

如果有給定的性能指標,則對代碼進行測試,是否滿足給定性能參數。即只是一個驗證的過程

在進行驗收時發現當下代碼不滿足需求性能時,需要進一步測試幫助開發定位問題。此時需要知道受壓點是什么。

a 內部邏輯占用cpu資源,導致性能問題

b 數據源使用不合理:通常適當的改變讀寫方式,或者mydis與redis/memcache的變更,及增加節點

c 頁面的加載方式有邏輯漏洞

2 找出服務的性能極限,作為優化和擴展的評估資料

 性能驗收通過,滿足當下的性能需求。但是該服務之后可能會做很多擴展,需要進一步測試,找出性能極限和其限制因素,為擴展做出評估。

三 性能參數需要注意哪些參數?

而我們在測試中所關注的參數主要分為兩類:服務端和機器兩類參數。

首先服務端,我們說一個好的系統應該是"高並發,低延時",並發和響應時間就是兩個最重要的參數

1 並發量:即系統同時處理事務的能力,通常我們用QPS(query per second)來表示,也有地方用RPS(request per second),TPS(吞吐量,准確來說應該是吞吐率)來表示.

但其實我們拿到的qps/tps/rps等大多都是1s內的處理能力,並不等同於同一時刻處理的請求。jmeter中定時器里有元器件可以進行控制,等待請求n個時,一同向服務器發請求。

2 響應時間:客戶端發出請求,到接收到返回的時間。比如我訪問baidu.com,按下enter之后等了1s打開了百度首頁,那響應時間就是1s。這個過程的時間包括=網絡傳輸時間+服務處理請求時間;尤其對於一個非web的請求,如果我本身的網絡環境不好,就會導致傳輸時間過長,所以也有人僅用服務處理請求時間來表示響應時間。我認為兩者均可,只要在報告里寫清楚測試環境和字段含義即可。

3 錯誤率:前面兩個是效率,這個是質量。未成功返回的,返回內容缺少不正確的,都算在這里。測試時可以根據返回的狀態碼或者返回內容做alert。

其次機器環境,主要是從保護硬件的方面來說,兩個需要關注的參數是cpu和load,如下。

1 cpu:計算機的邏輯處理能力。CPU利用率反映的是CPU被使用的情況,當CPU長期處於被使用而沒有得到足夠的時間休息間歇,那么對於CPU硬件來說是一種超負荷的運作,需要調整使用頻度。

2 Load Average:是 CPU的Load,它所包含的信息不是CPU的使用率狀況,而是在一段時間內CPU正在處理以及等待CPU處理的進程數之和的統計信息,也就是CPU使用隊列的長度的統計信息。從另一個角度來展現對於CPU使用狀態的描述,Load Average越高說明對於CPU資源的競爭越激烈,CPU資源比較短缺。對於資源的申請和維護其實也是需要很大的成本,所以在這種高Average Load的情況下CPU資源的長期“熱競爭”也是對於硬件的一種損害。

好吧,上面都是從別人家拿來的概念,如果你的機器是雙核,那么你的進程占用cpu 100%即占用了機器一半的cpu資源,load 為4,則表示當前隊列有4個需要處理,而你的cpu限制了同時只能處理2個,所以就會有隊列累積。所以做性能測試需要關注下cpu和load,來保證你的程序在一個良好的環境下運行吧。

3 網絡I/O:磁盤通常是計算機最慢的子系統,也是最容易出現性能瓶頸的地方,因為磁盤離 CPU 距離最遠而且 CPU 訪問磁盤要涉及到機械操作。

尤其在有大量讀寫操作時更需要重點關注。

[mobdev@ip-192-168-1-15:52.77.116.218 trunk]$iostat -x
Linux 3.14.27-25.47.amzn1.x86_64 (ip-192-168-1-15)     06/15/2016     _x86_64_    (4 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           2.25    0.00    0.12    1.45    0.01   96.17

Device:         rrqm/s   wrqm/s     r/s     w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
xvda              0.01     4.10    1.85   32.75   239.05   890.75    32.65     0.52   15.05   0.62   2.14

4 網卡:這個是我在測試中注意到的,有一些資源很占用網卡。一個Outgoing一個InComing。當時一個模塊是不停的被請求,它並不占用以上幾項資源,限制其性能的因素就是網卡的Outgoing。當時只是為了找出這個性能限制因素。我並沒有了解太多

常用的大概就這幾個了,如果以后發現了特別的參數,再補充~


免責聲明!

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



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