天天看點

apache自帶壓力測試工具ab詳解

我們組的項目這兩天就要驗收了,這一兩個星期除了不斷的進行正常測試外就是進行壓力測試,TFF給我推薦了apache的ab壓力測試工具,感覺挺好用的,裡面會牽扯到一些參數,看了一些資料算是有所了解,整理一下!

我們在測試的時候指令很簡單,就是這一條指令

ab -n1000 -c100 http://115.XXX.XXX.XXX:8080/

其中的參數說明是:

1. -n1000 表示總請求數位1000

2. -c 表示并發使用者數為100

3. http://115.XXX.XXX.XXX:8080/ 表示這些請求的目标URL。

Server Software

表示被測試的Web伺服器軟體名稱,這裡是Apache/2.2.19,它來自于http響應資料的頭資訊,是以如果是我們自己編寫的Web伺服器軟或者修改開源Web伺服器軟體的源代碼,便可以随意改寫這裡的名稱。

Server Hostname

表示請求的URL中的主機部分名稱,它來自于http請求資料的頭資訊。

Server Port

表示被測試的Web伺服器軟體的監聽端口,為了友善測試,我們後面會對多個不同的Web伺服器軟體使用不同的監聽端口。

Document Path

表示請求的URL中根絕對路徑,它同樣來自于http請求資料的頭資訊,通過它的字尾名,我們一般可以了解該請求的類型。

Document Length

表示http響應資料的正文長度。

Concurrency Level

表示并發使用者數,這是我們設定的參數。

Time taken for tests

表示所有這些請求被處理完成花費的總時間。順便提一下,某些Apache版本如2.2.4附帶的ab,對于這一統計項存在一些計算上的bug,當總請求數較少時,其統計的總時間會無法小于0.1s。

Complete requests

表示總請求數,這是我們設定的相應參數。

Failed requests

表示失敗的請求數,這裡的失敗是指請求的連接配接伺服器、發送資料、接收資料等環節發生異常,以及無響應後逾時的情況。對于逾時時間的設定可以用ab的-t參數。

而如果接受到的http響應資料的頭資訊中含有2xx以外的狀态碼,則會在測試結果顯示另一個名為“Non-2xx responses”的統計項,用于統計這部分請求數,這些請求并不算是失敗的請求。

Total transferred

表示所有請求的響應資料長度總和,包括每個http響應資料的頭資訊和正文資料的長度。注意這裡不包括http請求資料的長度,是以Total

transferred代表了從Web伺服器流向使用者PC的應用層資料總長度。通過使用ab的-v參數即可檢視詳細的http頭資訊。

HTML transferred

表示所有請求的響應資料中正文資料的總和,也就是減去了Total transferred中http響應資料中頭資訊的長度。

Requests per second

這便是我們重點關注的吞吐率,它等于:

Complete requests / Time taken for tests

Time per request

這便是前面提到的使用者平均請求等待時間,它等于:

Time taken for tests / (Complete requests /Concurrency Level)

Time per request?(across all concurrent requests)

這便是前面提到的伺服器平均請求處理時間,它等于:

Time taken for tests / Complete requests

這正是吞吐率的倒數。同時,它也等于:

Time per request / Concurrency Level

Transfer rate

表示這些請求在機關時間内從伺服器擷取的資料長度,它等于:

Total transferred / Time taken for tests

這個統計項可以很好的說明伺服器在處理能力達到限制時,其出口帶寬的需求量。

利用前面介紹的有關帶寬的知識,不難計算出結果。

Percentage of the requests served within a certain time(ms)

這部分資料用于描述每個請求處理時間的分布情況,比如在以上測試結果中,80%請求的處理時間都不超過1ms,而99%的請求都不超過2ms。注意這裡的處理時間,是指前面的Time per request,即對于單個使用者而言,平均每個請求處理的時間。