ab壓測參數和響應字段說明

轉自 https://blog.csdn.net/Sunflower23/article/details/87076416
http://blog.sina.com.cn/s/blog_99baab530102vbwz.html

  1. 簡介

ab是apache自帶的壓力測試工具,ab是apachebench命令的縮寫。ab非常實用,它不僅可以對apache服務器進行網站訪問壓力測試,也可以對或其它類型的服務器進行壓力測試,比如nginx、tomcat、IIS等

  1. 原理

ab命令會創建多個併發訪問線程,模擬多個訪問者同時對某一URL地址進行訪問。它的測試目標是基於URL的,因此,它既可以用來測試apache的負載壓力,也可以測試nginx、lighthttp、tomcat、IIS等其它Web服務器的壓力
ab命令對發出負載的計算機要求很低,它既不會佔用很高CPU,也不會佔用很多內存。但卻會給目標服務器造成巨大的負載,自己測試使用也需要注意,否則一次上太多的負載。可能造成目標服務器資源耗完,嚴重時甚至導致死機

3、安裝

首先需要安裝Apache服務器和安裝最新版C++ Redistributable Visual Studio 2017組件,下載地址:https://www.apachelounge.com/download/

根據自己電腦配置下載對應的安裝包,並解壓到C盤,

這裏需要說明一下,爲什麼要解壓到C盤,解壓有個安裝說明文檔, Apache需要解壓在一個盤符的根目錄下,這就是所謂的“ServerRoot”,默認是配置在:{Apache24}\conf\httpd.conf這個文件中的,而默認配置的ServerRoot是放在了C盤(C:/Apache24),也就是說解壓到其他盤是無法啓動的。當然,你也可以解壓到D盤再直接修改**{Apache24}\conf\httpd.conf的配置**

這些步驟準備好了之後,就可以運行bin目錄下的httpd.exe文件,運行之後後臺服務就啓動了,這時候在瀏覽器中輸入:http://localhost/,如果能夠看到測試頁面,

就說明服務啓動成功,下面就可以在DOS界面輸入我們的命令了。

  1. 使用

在命令行下跳轉到bin目錄下,運行ab.exe

啓動後就可運行我們的壓測命令了,需要注意的是,運行的地址後面需要附帶path,否則視爲無效。一下以百度網址爲例

-n是指請求總數爲1000,-c請求併發數爲500(最常用的命令)

可以看到,如圖列出了“請求命令”、“測試結果主體”、“所測試數據返回時間的百分比”,其中,“測試結果主體”裏面,具體的參數爲:

Concurrency Level: 併發量。(500)

Time taken for tests: 整個測試所用的時間。(7.167s)

Complete requests: 完成的請求數。(1000)

Failed requests: 失敗的請求數。(0)

Non-2xx responses: 如果接收到的HTTP響應數據的頭信息中含有2XX以外的狀態碼,則會在測試結果中顯示另一個名爲“Non-2xx responses”的統計項,用於統計這部分請求數(這些請求並不算在失敗的請求中)。(1000)

Total transferred: 表示所有請求的響應數據長度總和,包括每個HTTP響應數據的頭信息和正文數據的長度。(484000bytes)

HTML transferred: 表示所有請求的響應數據中正文數據的總和,也就是減去了Total transferred中HTTP響應數據中的頭信息的長度。(222000 bytes)

Requests per second(RPS): 吞吐率。要清楚吞吐率是與併發數相關的,即使請求總數相同,但如果併發數不一樣,吞吐率還是很可能有很大差異的。 (139.53【#/second】)

計算公式:Complete requests/Time taken for tests

Time per request(mean): 用戶平均請求等待時間。也就是一次併發總的時間。 (3583.500 ms)

計算公式:Time token for tests/(Complete requests/Concurrency Level)。

Time per request(mean, across all concurrent requests): 服務器平均請求等待時間。也就是一次請求(在本例中也就是500中的平均每一次)所需時間。 (7.167ms)

計算公式:Time taken for tests/Complete requests ; 也可以這麼統計:Time per request/Concurrency Level。

Transfer rate: 表示這些請求在單位時間內從服務器獲取的數據長度。 (65.95Kbytes/sec)

計算公式:Total trnasferred/ Time taken for tests

這個統計很好的說明服務器的處理能力達到極限時,其出口寬帶的需求量。

Percentage of requests served within a certain time (ms) : 這部分數據用於描述每個請求處理時間的分佈情況,比如以上測試,80%的請求處理時間都不超過3599ms,這個處理時間是指前面的Time per request,即對於單個用戶而言,平均每個請求的處理時間。

更多命令參數參考:

-n requests Number of requests to perform //本次測試發起的總請求數

-c concurrency Number of multiple requests to make   //一次產生的請求數(或併發數)

-t timelimit Seconds to max. wait for responses    //測試所進行的最大秒數,默認沒有時間限制。

-r Don’t exit on socket receive errors. // 拋出異常繼續執行測試任務

-p postfile File containing data to POST  //包含了需要POST的數據的文件,文件格式如“p1=1&p2=2”.使用方法是 -p 111.txt

-T content-type Content-type header for POSTing

//POST數據所使用的Content-type頭信息,如 -T “application/x-www-form-urlencoded” 。 (配合-p)

-v verbosity How much troubleshooting info to print

//設置顯示信息的詳細程度 – 4或更大值會顯示頭信息, 3或更大值可以顯示響應代碼(404, 200等), 2或更大值可以顯示警告和其他信息。 -V 顯示版本號並退出。

-C attribute Add cookie, eg. -C “c1=1234,c2=2,c3=3” (repeatable)

//-C cookie-name=value 對請求附加一個Cookie:行。 其典型形式是name=value的一個參數對。此參數可以重複,用逗號分割。

提示:可以藉助session實現原理傳遞 JSESSIONID參數, 實現保持會話的功能,如-C ” c1=1234,c2=2,c3=3, JSESSIONID=FF056CD16DA9D71CB131C1D56F0319F8″ 。

-w Print out results in HTML tables  //以HTML表的格式輸出結果。默認時,它是白色背景的兩列寬度的一張

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章