ApacheBench 效能壓力測試工具

2021-09-18 07:29:11 字數 2310 閱讀 5263

apachebench命令原理:

1 ab命令會建立很多的併發訪問執行緒,模擬多個訪問者同時對某一url位址進行訪問。

2 試目標是基於url,可以用來測試apache的負載壓力,也可以測試nginx、lighthttp、tomcat、iis等其它web伺服器的壓力。

3 ab命令對發出負載的計算機要求很低,既不會占用很高cpu,也不會占用很多記憶體,但卻會給目標伺服器造成巨大的負載,其原理類似cc攻擊。自己測試使用也須注意,否則一次上太多的負載,可能造成目標伺服器因資源耗完,嚴重時甚至導致宕機。

執行的程式

win系統下,開啟cmd命令列視窗,cd到apache安裝目錄的bin目錄下

語法及引數

引數選項

options are:

-n requests    #執行的請求數,即一共發起多少請求。

-c concurrency    #請求併發數。

-t timelimit    #測試所進行的最大秒數。其內部隱含值是-n 50000,它可以使對伺服器的測試限制在乙個固定的總時間以內。預設時,沒有時間限制。

-s timeout    #指定每個請求的超時時間,預設是30秒。

-b windowsize    #指定tcp視窗的大小,單位是位元組。

-b address    #指定在發起連線時繫結的ip位址是什麼。

-p postfile    #指定要post的檔案,同時要設定-t引數。

-u putfile    #指定要put的檔案,同時要設定-t引數。

-t content-type    #指定使用post或put上傳文字時的文字型別,預設是'text/plain'。

-v verbosity    #設定詳細模式等級。

-w    #將結果輸出到html的表中。

-i    #使用head方式代替get發起請求。

-y attributes    #以**方式輸出時,設定html**tr屬性。 

-z attributes    #以**方式輸出時,設定html**th或td屬性。

-c attribute    #新增cookie,比如'apache=1234'。(可重複)

-h attribute    #為請求追加乙個額外的頭部,比如'accept-encoding: gzip'。(可重複)

-a attribute    #對伺服器提供basic認證信任。使用者名稱和密碼由乙個:隔開,並以base64編碼形式傳送。無論伺服器是否需要(即,是否傳送了401認證需求**),此字串都會被傳送。

-p attribute    #對乙個中轉**提供basic認證信任。使用者名稱和密碼由乙個:隔開,並以base64編碼形式傳送。無論伺服器是否需要(即, 是否傳送了401認證需求**),此字串都會被傳送。

-x proxy:port   #指定**伺服器的ip和埠。

-v              #列印版本資訊。

-k              #啟用http keepalive功能,即在乙個http會話中執行多個請求。預設時,不啟用keepalive功能。

-d              #不顯示"percentage served within xx [ms] table"的訊息(為以前的版本提供支援)。

-q              #如果處理的請求數大於150,ab每處理大約10%或者100個請求時,會在stderr輸出乙個進度計數。此-q標記可以抑制這些資訊。

-g filename     #把所有測試結果寫入乙個'gnuplot'或者tsv(以tab分隔的)檔案。此檔案可以方便地匯入到gnuplot,idl,mathematica,igor甚至excel中。其中的第一行為標題。

-e filename     #產生乙個以逗號分隔的(csv)檔案,其中包含了處理每個相應百分比的請求所需要(從1%到100%)的相應百分比的(以微妙為單位)時間。由於這種格式已經「二進位製化」,所以比'gnuplot'格式更有用。

-r              #當收到錯誤時不要退出。

-h              #輸出幫助資訊

-z ciphersuite  指定ssl/tls密碼套件

-f protocol     指定ssl/tls協議(ssl3, tls1, tls1.1, tls1.2 or all)

案例:ab -n 4000 -c 1000 http://localhost:8080/ex2/responsecode

-n後面的4000代表總共發出4000個請求;-c後面的1000表示採用1000個併發(模擬1000個人同時訪問),後面的**表示測試的目標url。

Apache Bench做壓力測試

apache bench是乙個簡單易用的壓力測試工具,在這裡我不想多講。今天主要說的是寫乙個py指令碼來自動化測試過程,以及中間遇到的一些奇葩問題。python usr bin env python encoding utf 8 import sys import subprocess as sub...

Apache Bench 效能測試

apache bench ab的全稱是apache bench,是apache 附帶的乙個小工具,專門用於http server 的benchmark testing,可以同時模擬多個併發請求。測試方法 執行 d program files apache software foundation ap...

使用apacheBench做壓力測試

乙個簡單的例子 在這個例子的一開始,我執行了這樣乙個命令ab n 10 c 10這個命令的意思是啟動 ab 向 www.google.com 傳送10個請求 n 10 並每次傳送10個請求 c 10 也就是說一次都發過去了。跟著下面的是 ab 輸出的測試報告,紅色部分是我新增的注釋。整個測試持續的時...