轉載:ApacheBench(ab)使用詳解html
1、Apache Bench簡介nginx
ApacheBench 是 Apache 服務器自帶的一個web壓力測試工具,簡稱ab。ab又是一個命令行工具,對發起負載的本機要求很低,根據ab命令能夠建立不少的併發訪問線程,模擬多個訪問者同時對某一URL地址進行訪問,所以能夠用來測試目標服務器的負載壓力。它的測試目標是基於URL的,所以,既能夠用來測試Apache的負載壓力,也能夠測試nginx、lighthttp、tomcat、IIS等其它Web服務器的壓力。總的來講ab工具小巧簡單,上手學習較快,能夠提供須要的基本性能指標,可是沒有圖形化結果,不能監控。web
ab命令對發出負載的計算機要求很低,既不會佔用很高CPU,也不會佔用不少內存,但卻會給目標服務器形成巨大的負載,其原理相似CC攻擊。本身測試使用也須注意,不然一次上太多的負載,可能形成目標服務器因資源耗完,嚴重時甚至致使死機。apache
2、Apache Bench安裝tomcat
首先須要安裝Apache服務器,下載地址:https://www.apachelounge.com/download/,服務器
建議下載最新版本的,由於舊版本的ab不支持-r參數。cookie
3、Apache Bench使用網絡
1.使用例子:session
步驟1:找到安裝Apache Bench文件的bin目錄下,輸入ab.exe 能夠看到提示信息以下:併發
步驟2:
輸入 ab -n 100 -c 20 http://localhost:8080/jsrWeb/index.html(-n發出100個請求,-c模擬20併發,至關100人同時訪問,後面是測試url)
輸入 ab -n 100 -c 20 http://localhost:8080/jsrAdminWeb/test?str=AA (傳入一個參數)
輸入 ab -n 100 -c 20 -T "text/plain" -p test.txt http://localhost:8080/jsrAdminWeb/test (傳入多個參數,test.txt文件與ab.exe在同目錄下,test.txt文件裏寫str1=AA&str2=BB)
輸入 ab -n 100 -c 20 -T "text/plain" -p E:\DOWNLOAD\httpd-2.4.33-Win64-VC15\Apache24\test.txt http://localhost:8080/jsrAdminWeb/test (傳入多個參數,test.txt文件與ab.exe不在同目錄下,寫入test.txt文件的全路徑)
輸入 ab -t 60 -c 20 http://localhost:8080/jsrWeb/index.html ( 在60秒內發請求,一次20個請求)
結果參數解釋(轉載):
Server Software: Microsoft-HTTPAPI/2.0
Server Hostname: 192.168.0.10
Server Port: 80
Document Path: /
Document Length: 315 bytes HTTP響應數據的正文長度
Concurrency Level: 800
Time taken for tests: 0.914 seconds 全部這些請求處理完成所花費的時間
Complete requests: 800 完成請求數
Failed requests: 0 失敗請求數
Write errors: 0
Non-2xx responses: 800
Total transferred: 393600 bytes 網絡總傳輸量
HTML transferred: 252000 bytes HTML內容傳輸量
Requests per second: 875.22 [#/sec] (mean) 吞吐量-每秒請求數
Time per request: 914.052 [ms] (mean) 服務器收到請求,響應頁面要花費的時間
Time per request: 1.143 [ms] (mean, across all concurrent requests) 併發的每一個請求平均消耗時間
Transfer rate: 420.52 [Kbytes/sec] received 平均每秒網絡上的流量,能夠幫助排除是否存在網絡流量過大致使響應時間延長的問題
網絡上消耗的時間的分解:
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 1 0.5 1 3
Processing: 245 534 125.2 570 682
Waiting: 11 386 189.1 409 669
Total: 246 535 125.0 571 684
整個場景中全部請求的響應狀況。在場景中每一個請求都有一個響應時間
其中 50% 的用戶響應時間小於 571 毫秒
80 % 的用戶響應時間小於 652 毫秒
最大的響應時間小於 684 毫秒
Percentage of the requests served within a certain time (ms)
50% 571
66% 627
75% 646
80% 652
90% 666
95% 677
98% 681
99% 682
100% 684 (longest request)
2.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而不是服務器的性能。