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 輸出的測試報告,紅色部分是我新增的注釋。整個測試持續的時...