我們組的項目這兩天就要驗收了,這一兩個星期除了不斷的進行正常測試外就是進行壓力測試,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,即對于單個使用者而言,平均每個請求處理的時間。