posts - 28,  comments - 15,  trackbacks - 0

           

              Apache Benchmark簡稱為ab,是apache自帶的用于HTTP Server測試的工具。它可以接受單一的URL,然后重復(fù)地按照指定的多個獨(dú)立線程的方式加載,并使用不同的命令行參數(shù)控制訪問的次數(shù)、最大的并發(fā)訪問數(shù)等。另外一項不錯的功能是可以輸出比較詳細(xì)的報告。

           

          語法
          ab [ -A auth-username:password ] [ -c concurrency ] [ -C cookie-name=value ] [ -d ] [ -e csv-file ] [ -g gnuplot-file ] [ -h ] [ -H custom-header ] [ -i ] [ -k ] [ -n requests ] [ -p POST-file ] [ -P proxy-auth-username:password ] [ -q ] [ -s ] [ -S ] [ -t timelimit ] [ -T content-type ] [ -v verbosity] [ -V ] [ -w ] [ -x <table>-attributes ] [ -X proxy[:port] ] [ -y <tr>-attributes ] [ -z <td>-attributes ] [http://]hostname[:port]/path

          選項
          -A auth-username:password
          向服務(wù)器提供基本認(rèn)證信息。用戶名和密碼之間由一個":"隔開,并將被以base64編碼形式發(fā)送。無論服務(wù)器是否需要(即是否發(fā)送了401認(rèn)證需求代碼),此字符串都會被發(fā)送。
          -c concurrency
          一次產(chǎn)生的請求個數(shù)。默認(rèn)是一次一個。
          -C cookie-name=value
          對請求附加一個"Cookie:"頭行。其典型形式是 name=value 的一個參數(shù)對。此參數(shù)可以重復(fù)。
          -d
          不顯示"percentage served within XX [ms] table"消息(為以前的版本提供支持)。
          -e csv-file
          產(chǎn)生一個逗號分隔(CSV)文件,其中包含了處理每個相應(yīng)百分比請求(從1%到100%)所需要的相應(yīng)百分比時間(以微秒為單位)。由于這種格式已經(jīng)"二進(jìn)制化",所以比"gnuplot"格式更有用。
          -g gnuplot-file
          把所有測試結(jié)果寫入一個"gnuplot"或者TSV(以Tab分隔)文件。此文件可以方便地導(dǎo)入到 Gnuplot, IDL, Mathematica, Excel中。其中的第一行為標(biāo)題。
          -h
          顯示使用方法的幫助信息。
          -H custom-header
          對請求附加額外的頭信息。此參數(shù)的典型形式是一個有效的頭信息行,其中包含了以冒號分隔的字段和值(如:"Accept-Encoding: zip/zop;8bit")。
          -i
          執(zhí)行HEAD請求,而不是GET 。
          -k
          啟用KeepAlive功能,即在一個HTTP會話中執(zhí)行多個請求。默認(rèn)不啟用KeepAlive功能。
          -n requests
          在測試會話中所執(zhí)行的請求個數(shù)。默認(rèn)僅執(zhí)行一個請求,此時其結(jié)果不具有意義。
          -p POST-file
          包含了POST數(shù)據(jù)的文件。
          -P proxy-auth-username:password
          對一個中轉(zhuǎn)代理提供基本認(rèn)證信息。用戶名和密碼由一個":"隔開,并將被以base64編碼形式發(fā)送。無論服務(wù)器是否需要(即是否發(fā)送了407代理認(rèn)證需求代碼),此字符串都會被發(fā)送。
          -q
          如果處理的請求數(shù)大于150,ab每處理大約10%或者100個請求時,會在stderr輸出一個進(jìn)度計數(shù)。此 -q 標(biāo)記可以屏蔽這些信息。
          -s
          用于編譯中(ab -h 會告訴你)使用了SSL的受保護(hù)的https ,而不是http協(xié)議的時候。此功能是實驗性的,最好不要用。
          -S
          不顯示中值和標(biāo)準(zhǔn)偏差值,而且在均值和中值為標(biāo)準(zhǔn)偏差值的1到2倍時,也不顯示警告或出錯信息。默認(rèn)時,會顯示最小值/均值/最大值等數(shù)值。(為以前的版本提供支持)
          -t timelimit
          測試所進(jìn)行的最大秒數(shù)。內(nèi)部隱含值是"-n 50000"。它可以使對服務(wù)器的測試限制在一個固定的總時間以內(nèi)。默認(rèn)時,沒有時間限制。
          -T content-type
          POST數(shù)據(jù)時所使用的"Content-type"頭信息。
          -v verbosity
          設(shè)置顯示信息的詳細(xì)程度,4或更大值會顯示頭信息,3或更大值可以顯示響應(yīng)代碼(404,200等),2或更大值可以顯示警告和其他信息。
          -V
          顯示版本號并退出。
          -w
          以HTML表格形式輸出結(jié)果。默認(rèn)時,它是白色背景的兩列寬度的一張表。
          -x <table>-attributes
          設(shè)置<table>屬性的字符串。此屬性被填入<table 這里 > 。
          -X proxy[:port]
          對請求使用代理服務(wù)器。
          -y <tr>-attributes
          設(shè)置<tr>屬性的字符串。
          -z <td>-attributes
          設(shè)置<td>屬性的字符串。

          用例

          1.測試本機(jī)apache

           

          E:\cluster>ab --1000 -100 http://localhost/
          This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0
          Copyright 
          1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
          Copyright 1997-2005 The Apache Software Foundation, http://www.apache.org/

          Benchmarking localhost (be patient)
          Completed 
          100 requests
          Completed 
          200 requests
          Completed 
          300 requests
          Completed 
          400 requests
          Completed 
          500 requests
          Completed 
          600 requests
          Completed 
          700 requests
          Completed 
          800 requests
          Completed 
          900 requests
          Finished 
          1000 requests


          Server Software:        Apache
          /2.0.52
          Server Hostname:        localhost
          Server Port:            
          80

          Document Path:          
          /
          Document Length:        
          1494 bytes

          Concurrency Level:      
          100
          /*整個測試持續(xù)的時間*/
          Time taken 
          for tests:   3.296875 seconds
          /*完成的請求數(shù)量*/
          Complete requests:      
          1000
          /*失敗的請求數(shù)量*/
          Failed requests:        
          0
          Write errors:           
          0
          /*保持聯(lián)機(jī)連接的請求數(shù)量。只有在命令行中使用-k,才能看到該屬性值。*/
          Keep
          -Alive requests:    1000
          /*整個場景中的網(wǎng)絡(luò)傳輸量*/
          Total transferred:      
          1987070 bytes
          /*整個場景中的HTML內(nèi)容傳輸量*/
          HTML transferred:       
          1494000 bytes
          /*每秒鐘平均處理的請求數(shù)*/
          Requests per second:    
          303.32 [#/sec] (mean)
          /*每個線程下的一組請求平均消耗時間*/
          Time per request:       
          329.688 [ms] (mean)
          /*并發(fā)的每個請求平均消耗時間*/
          Time per request:       
          3.297 [ms] (mean, across all concurrent requests)
          /*平均每秒網(wǎng)絡(luò)上的流量,可以幫助排除是否存在網(wǎng)絡(luò)流量過大導(dǎo)致響應(yīng)時間延長的問題*/
          Transfer rate:          
          588.44 [Kbytes/sec] received

          Connection Times (ms)
                        min  mean[
          +/-sd] median   max
          Connect:        
          0    0   0.8      0      15
          Processing:     
          0  212  69.4    218     406
          Waiting:        
          0  211  69.5    218     406
          Total:          
          0  212  69.3    218     406
          /*下面的內(nèi)容為整個場景中所有請求的響應(yīng)情況。在場景中每個請求都有一個響應(yīng)時間,其中 50% 的用戶響應(yīng)時間小于 218 毫秒,66 % 的用戶響應(yīng)時間小于 234 毫秒,最大的響應(yīng)時間小于 406 毫秒*/

          Percentage of the requests served within a certain time (ms)
            
          50%    218
            
          66%    234
            
          75%    250
            
          80%    265
            
          90%    296
            
          95%    312
            
          98%    343
            
          99%    359
           
          100%    406 (longest request)

           

           

          如果你設(shè)置的-c過大,比如在windows下大于65可能出現(xiàn)的錯誤,以下是網(wǎng)上收集的解決辦法:

          使用ab的時候當(dāng)并發(fā)數(shù)超過1024就會示出錯:
          windows下提示:apr_pollset_create failed: Invalid argument (22)
          linux下提示:socket: Too many open files (24)

          下面是從CSDN轉(zhuǎn)的一篇linux下的解決辦法
          =======================================
          ab測試apache出錯的解決辦法 http://blog.csdn.net/answerzy/archive/2007/11/19/1892194.aspx
          [root@answer bin]# ./ab -n 20000 -c 2000 http://192.168.2.60/
          This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0
          Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
          Copyright 1997-2005 The Apache Software Foundation, http://www.apache.org/

          Benchmarking 192.168.2.60 (be patient)
          socket: Too many open files (24)

          解決辦法: bash自帶的ulimit, 各大版本均有提供
          ulimit -n 2000(你需要的值)
          =======================================
          這應(yīng)該不難理解,linux是通過文件來對設(shè)備進(jìn)行管理,ulimit -n是設(shè)置同時打開文件的最大數(shù)值,ab中每一個連接打開一個設(shè)備文件,所以設(shè)置這個值就可以解決了。

           

          下面是windows下的解決辦法

          TcpTimedWaitDelay

            • 描述:確定 TCP/IP 在釋放已關(guān)閉的連接并再次使用其資源前必須經(jīng)過的時間。關(guān)閉與釋放之間的這段時間稱為 TIME_WAIT 狀態(tài)或者兩倍最大段生存期(2MSL)狀態(tài)。此時間期間,重新打開到客戶機(jī)和服務(wù)器的連接的成本少于建立新連接。通過減少此條目的值,TCP/IP 可以更快地釋放關(guān)閉的連接,并為新連接提供更多資源。如果運(yùn)行中的應(yīng)用程序要求快速釋放連接或創(chuàng)建新連接,或者由于多個連接處于 TIME_WAIT 狀態(tài)而導(dǎo)致吞吐量較低,請調(diào)整此參數(shù)。
            • 如何查看或設(shè)置:

          1.     使用 regedit 命令,訪問 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TCPIP\Parameters 注冊表子鍵,然后創(chuàng)建新的 REG_DWORD TcpTimedWaitDelay

          2.     將此值設(shè)置為十進(jìn)制 30,即十六進(jìn)制 0x0000001e。此值將等待時間設(shè)置為 30 秒。

          3.     停止并重新啟動系統(tǒng)。

            • 缺省值:0xF0,此值將等待時間設(shè)置為 240 秒(4 分鐘)。
            • 建議值:最小值為 0x1E,此值將等待時間設(shè)置為 30 秒。
          • MaxUserPort
            • 描述:確定當(dāng)應(yīng)用程序向系統(tǒng)請求獲取可用的用戶端口時,TCP/IP 可指定的最高端口號。
            • 如何查看或設(shè)置:

          1.     使用 regedit 命令,訪問 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TCPIP\Parameters 注冊表子鍵,然后創(chuàng)建新的 REG_DWORD MaxUserPort

          2.     將此值至少設(shè)置為十進(jìn)制 32768

          3.     停止并重新啟動系統(tǒng)。

            • 缺省值:
            • 建議值:至少為十進(jìn)制 32768
          • 最大連接儲備
            • 描述:如果同時接收到許多連接嘗試,請增大操作系統(tǒng)支持的缺省暫掛連接數(shù)。
            • 如何查看或設(shè)置:

          1.     使用 regedit 命令并訪問 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\AFD\Parameters 注冊表子鍵。

          2.     根據(jù)需要創(chuàng)建并設(shè)置下列值:

          3. "EnableDynamicBacklog"=dword:00000001

          4.  

          5. "MinimumDynamicBacklog"=dword:00000020

          6.  

          7. "MaximumDynamicBacklog"=dword:00001000

          8.  

          "DynamicBacklogGrowthDelta"=dword:00000010

          9.     這些值將最小可用連接數(shù)設(shè)置為 20,將最大可用連接數(shù)設(shè)置為 1000。每當(dāng)可用連接數(shù)小于最小可用連接數(shù)時,可用連接數(shù)都會增加 10

          10. 停止并重新啟動系統(tǒng)。

          • KeepAliveInterval
            • 描述:確定 TCP 在未接收到響應(yīng)時重新嘗試保持活動傳輸?shù)念l率。
            • 如何查看或設(shè)置:

          1.     使用 regedit 命令,訪問 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\AFD\Parameters 注冊表子鍵,然后創(chuàng)建新的 REG_DWORD KeepAliveInterval

          2.     將此值設(shè)置為 1 秒。

          3.     停止并重新啟動系統(tǒng)。

            • 缺省值:1
            • 建議值:

          另外作者在window xp測試時,即使設(shè)置了TcpTimedWaitDelayMaxUserPort同樣會出現(xiàn)apr_pollset_create failed: Invalid argument (22)錯誤。后下載其他版本后竟然可用,經(jīng)過檢查發(fā)現(xiàn),本機(jī)安裝的ab.exe的版本是Version 2.0.41-dev <$Revision: 1.121.2.12 $> apache-2.0,而另外下載的版本是:Version 2.0.40-dev <$Revision: 1.1246 $> apache-2.0,下載地址:http://www.9enjoy.com/attachment.php?fid=18

           

          參考資料

          http://httpd.apache.org/docs/2.0/programs/ab.html

           

           

          posted on 2011-09-15 16:09 zhangxl 閱讀(3232) 評論(1)  編輯  收藏


          FeedBack:
          # re: Apache Benchmark(ab)使用[未登錄]
          2012-02-21 16:30 | Sean
          其實就是ab版本不對  回復(fù)  更多評論
            

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          <2012年2月>
          2930311234
          567891011
          12131415161718
          19202122232425
          26272829123
          45678910

          常用鏈接

          留言簿(1)

          隨筆分類(17)

          隨筆檔案(28)

          文章分類(30)

          文章檔案(30)

          相冊

          收藏夾(2)

          hibernate

          java基礎(chǔ)

          mysql

          xml

          關(guān)注

          壓力測試

          算法

          最新隨筆

          搜索

          •  

          積分與排名

          • 積分 - 96753
          • 排名 - 600

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 兰坪| 宾阳县| 游戏| 广饶县| 偏关县| 广宁县| 铁力市| 城固县| 阳原县| 武城县| 潮州市| 伽师县| 东乌珠穆沁旗| 玉屏| 西平县| 平阳县| 溧水县| 克山县| 贺兰县| 湟源县| 洛川县| 沅陵县| 安义县| 青冈县| 澎湖县| 温泉县| 蓬安县| 城口县| 仪征市| 山东| 龙游县| 昭觉县| 陵水| 仁怀市| 邢台市| 盱眙县| 竹山县| 昆明市| 西贡区| 图片| 阳城县|