1. 程式人生 > >ApacheBench(ab)壓力測試工具,安裝,用法,引數說明

ApacheBench(ab)壓力測試工具,安裝,用法,引數說明

一、Apache Bench簡介
ApacheBench 是 Apache 伺服器自帶的一個web壓力測試工具,簡稱ab。ab又是一個命令列工具,對發起負載的本機要求很低,根據ab命令可以建立很多的併發訪問執行緒,模擬多個訪問者同時對某一URL地址進行訪問,因此可以用來測試目標伺服器的負載壓力。總的來說ab工具小巧簡單,上手學習較快,可以提供需要的基本效能指標,但是沒有圖形化結果,不能監控。

二、Apache Bench安裝
首先需要安裝Apache伺服器,下載地址:https://www.apachelounge.com/download/,
建議下載最新版本的,因為舊版本的ab不支援-r引數。

三、用法
在Windows系統下,開啟cmd命令列視窗,定位到apache安裝目錄的bin目錄下
2 cd C:\Program Files (x86)\Apache Software Foundation\Apache2.2\bin
3 鍵入命令:
4 ab -n 800 -c 800 http://192.168.0.10/
5 (-n發出800個請求,-c模擬800併發,相當800人同時訪問,後面是測試url)
6 ab -t 60 -c 100 http://192.168.0.10/
7 在60秒內發請求,一次100個請求。

備註:
ApacheBench的引數說明:

1 格式:ab [options] [http://]hostname[:port]/path
2 引數說明:
3 -n requests Number of requests to perform
4 //在測試會話中所執行的請求個數(本次測試總共要訪問頁面的次數)。預設時,僅執行一個請求。


5 -c concurrency Number of multiple requests to make
6 //一次產生的請求個數(併發數)。預設是一次一個。
7 -t timelimit Seconds to max. wait for responses
8 //測試所進行的最大秒數。其內部隱含值是-n 50000。它可以使對伺服器的測試限制在一個固定的總時間以內。預設時,沒有時間限制。
9 -p postfile File containing data to POST
10 //包含了需要POST的資料的檔案,檔案格式如“p1=1&p2=2”.使用方法是 -p 111.txt 。 (配合-T)
11 -T content-type Content-type header for POSTing
12 //POST資料所使用的Content-type頭資訊,如 -T “application/x-www-form-urlencoded” 。 (配合-p)

13 -v verbosity How much troubleshooting info to print
14 //設定顯示資訊的詳細程度 – 4或更大值會顯示頭資訊, 3或更大值可以顯示響應程式碼(404, 200等), 2或更大值可以顯示警告和其他資訊。 -V 顯示版本號並退出。
15 -w Print out results in HTML tables
16 //以HTML表的格式輸出結果。預設時,它是白色背景的兩列寬度的一張表。
17 -i Use HEAD instead of GET
18 // 執行HEAD請求,而不是GET。
19 -x attributes String to insert as table attributes
20 -y attributes String to insert as tr attributes
21 -z attributes String to insert as td or th attributes
22 -C attribute Add cookie, eg. -C “c1=1234,c2=2,c3=3″ (repeatable)
23 //-C cookie-name=value 對請求附加一個Cookie:行。 其典型形式是name=value的一個引數對。此引數可以重複,用逗號分割。
24 提示:可以藉助session實現原理傳遞 JSESSIONID引數, 實現保持會話的功能,如
25 -C ” c1=1234,c2=2,c3=3, JSESSIONID=FF056CD16DA9D71CB131C1D56F0319F8″ 。
26 -H attribute Add Arbitrary header line, eg. ‘Accept-Encoding: gzip’ Inserted after all normal header lines. (repeatable)
27 -A attribute Add Basic WWW Authentication, the attributes
28 are a colon separated username and password.
29 -P attribute Add Basic Proxy Authentication, the attributes
30 are a colon separated username and password.
31 //-P proxy-auth-username:password 對一箇中轉代理提供BASIC認證信任。使用者名稱和密碼由一個:隔開,並以base64編碼形式傳送。無論伺服器是否需要(即, 是否傳送了401認證需求程式碼),此字串都會被髮送。
32 -X proxy:port Proxyserver and port number to use
33 -V Print version number and exit
34 -k Use HTTP KeepAlive feature
35 -d Do not show percentiles served table.
36 -S Do not show confidence estimators and warnings.
37 -g filename Output collected data to gnuplot format file.
38 -e filename Output CSV file with percentages served
39 -h Display usage information (this message)
40 //-attributes 設定屬性的字串. 缺陷程式中有各種靜態宣告的固定長度的緩衝區。另外,對命令列引數、伺服器的響應頭和其他外部輸入的解析也很簡單,這可能會有不良後果。它沒有完整地實現 HTTP/1.x; 僅接受某些’預想’的響應格式。 strstr(3)的頻繁使用可能會帶來效能問題,即你可能是在測試ab而不是伺服器的效能。

1).只帶一個引數:
ab -n 1000 -c 100 http://123.56.153.48/cname/Buildings?Token=sfddgsf--g
2) 有多個引數:
ab -t 60 -c 100 -T “text/plain” -p p.txt http://192.168.0.10/hello.html
p.txt 是和ab.exe在一個目錄 ,若此種方式不可行,則將p.txt放到其他資料夾,但-p p.txt其p.txt須改為完整的檔案路徑,如: -p D:/param/p.txt
p.txt 中可以寫引數,如 p=wdp&fq=78

更為詳細操作

C:\xampp\apache\bin>ab-n 100 -c 10 http://www.abc.com/index.html
This is ApacheBench, Version 2.0.40-dev<$Revision: 1.146 $> apache-2.0
Copyright 1996 Adam Twiss, Zeus TechnologyLtd, http://www.zeustech.NET/
Copyright 2006 The Apache SoftwareFoundation, http://www.apache.org/

Benchmarking www.abc.com (bepatient)…done

Server Software: Apache
Server Hostname: www.abc.com
Server Port: 80

Document Path: /index.html
Document Length: 17784 bytes #請求文件大小

Concurrency Level: 10 #併發數
Time taken for tests: 11.898681 seconds #全部請求完成耗時
Complete requests: 100 #全部成功請求數 ==
Failed requests: 0 == #失敗請求數 ==
Write errors: 0 == #錯誤請求數 ==
Total transferred: 1805900 bytes #表示所用請求的響應資料總和,包括每個http響應資料的頭資訊+正文資料的長度(注意:這裡不包括http 請求資料的長度)僅僅表示web伺服器流向使用者pc的應用層資料總長度
HTML transferred: 1778400 bytes == #表示所用請求的響應資料中正文資料的總和,也就是Total transferred-HTML transferred=響應頭資訊的總長度

Requests per second: 8.40 [#/sec] (mean) #吞吐率=Complete requests/Time taken for tests
Time per request: 1189.868 [ms] (mean) #使用者平均等待時間
Time per request: 118.987 [ms] (mean, across all concurrentrequests #伺服器平均等待時間
Transfer rate: 148.17 [Kbytes/sec] received == #表示單位時間內從伺服器獲取的資料長度,傳輸速率=Total transferred/Time taken for tests==

Connection Times (ms) #連線時間
min mean[+/-sd] median(中位值) max
Connect: (#連線) 59 73 11.9 72 132
Processing: (#處理) 86 998538.7 938 2288
Waiting: (#等待) 63 135 106.8 94 663
Total: 155 1072540.6 1004 2362

在一定比例的請求服務時間

50% 1004
66% 1260
75% 1452
80% 1492
90% 1923
95% 2078
98% 2352
99% 2362
100% 2362 (longest request)