【轉】開源性能測試工具 - Apache ab 介紹

版權聲明:本文能夠被轉載,可是在未經本人許可前,不得用於任何商業用途或其餘以盈利爲目的的用途。本人保留對本文的一切權利。如需轉載,請在轉載是保留此版權聲明,並保證本文的完整性。也請轉貼者理解創做的辛勞,尊重做者的勞動成果。html

做者:陳雷 (Jackei)算法

郵箱:jackeichan@gmail.comapache

Blog:http://jackei.cnblogs.comcookie

引子網絡

按照原定計劃,今天開始研究 JMeter,一天的時間看完了大半的 User Manual,發現原來只要沉住氣,學習效率仍是蠻高的,並且大堆的英文文檔也沒有那麼可怕 ^_^session

原本想順便把文檔翻譯一下,不事後來想了想,看懂是一回事,所有翻譯出來又是另一回事了,工做量太大,並且這也不是我一開始要研究 JMeter 的本意。不如你們有興趣一塊兒研究的遇到問題再一塊兒討論吧。併發

開源工具一般都是爲了某個特定的目的而開發出來的,因此若是想找到一個開源的性能測試工具去與LoadRunner 或者 QALoad 之類去比較,實在有些勉強。可是開源工具也有它本身的優點:小巧、輕便,在本身擅長的領域能夠提供優秀的解決方案。因此,咱們能夠考慮準備一個本身的「開源測試工具箱」,平時利用空閒時間瞭解各類工具所適用的環境和目的,知識慢慢積累下來之後,就能夠在遇到問題時順手拈來輕鬆化解 ^_^less

另外,若是8月份和9月份的空閒時間足夠多,我想我會寫一個系列文章來說述在實際的開發和測試過程當中引入開源性能測試工具的狀況。若是有朋友感興趣,但願你們能夠一塊兒研究和討論。ide

簡介工具

ab的全稱是ApacheBench,是 Apache 附帶的一個小工具,專門用於 HTTP Server 的benchmark testing,能夠同時模擬多個併發請求。前段時間看到公司的開發人員也在用它做一些測試,看起來也不錯,很簡單,也很容易使用,因此今天花一點時間看了一下。

經過下面的一個簡單的例子和註釋,相信你們能夠更容易理解這個工具的使用。

一個簡單的例子

/*在這個例子的一開始,我執行了這樣一個命令 ab -n 10 -c 10 http://www.google.com/這個命令的意思是啓動 ab ,向 www.google.com 發送10個請求(-n 10) ,並每次發送10個請求(-c 10)——也就是說一次都發過去了。跟着下面的是 ab 輸出的測試報告,紅色部分是我添加的註釋。*/

C:\Program Files\Apache Software Foundation\Apache2.2\bin>ab -n 10 -c 10 http

://www.google.com/

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 www.google.com (be patient).....done

Server Software: GWS/2.1

Server Hostname: www.google.com

Server Port: 80

Document Path: /

Document Length: 230 bytes

Concurrency Level: 10

/*整個測試持續的時間*/

Time taken for tests: 3.234651 seconds

/*完成的請求數量*/

Complete requests: 10

/*失敗的請求數量*/

Failed requests: 0

Write errors: 0

Non-2xx responses: 10

Keep-Alive requests: 10

/*整個場景中的網絡傳輸量*/

Total transferred: 6020 bytes

/*整個場景中的HTML內容傳輸量*/

HTML transferred: 2300 bytes

/*你們最關心的指標之一,至關於 LR 中的 每秒事務數 ,後面括號中的 mean 表示這是一個平均值*/

Requests per second: 3.09 [#/sec] (mean)

/*你們最關心的指標之二,至關於 LR 中的 平均事務響應時間 ,後面括號中的 mean 表示這是一個平均值*/

Time per request: 3234.651 [ms] (mean)

/*這個還不知道是什麼意思,有知道的朋友請留言,謝謝 ^_^ */

Time per request: 323.465 [ms] (mean, across all concurrent requests)

/*平均每秒網絡上的流量,能夠幫助排除是否存在網絡流量過大致使響應時間延長的問題*/

Transfer rate: 1.55 [Kbytes/sec] received

/*網絡上消耗的時間的分解,各項數據的具體算法還不是很清楚*/

Connection Times (ms)

min mean[+/-sd] median max

Connect: 20 318 926.1 30 2954

Processing: 40 2160 1462.0 3034 3154

Waiting: 40 2160 1462.0 3034 3154

Total: 60 2479 1276.4 3064 3184

/*下面的內容爲整個場景中全部請求的響應狀況。在場景中每一個請求都有一個響應時間,其中 50% 的用戶響應時間小於 3064 毫秒,60 % 的用戶響應時間小於 3094 毫秒,最大的響應時間小於 3184 毫秒*/

Percentage of the requests served within a certain time (ms)

50% 3064

66% 3094

75% 3124

80% 3154

90% 3184

95% 3184

98% 3184

99% 3184

100% 3184 (longest request)

 

 

更多信息

ab 不像 LR 那麼強大,可是它足夠輕便,若是隻是在開發過程當中想檢查一下某個模塊的響應狀況,或者作一些場景比較簡單的測試,ab 仍是一個不錯的選擇——至少不用花費不少時間去學習 LR 那些複雜的功能,就更別說那License 的價格了。

下面是 ab 的詳細參數解釋,你們有興趣的能夠研究一下,最近沒有足夠多的時間研究,若是哪位朋友有興趣但願能夠幫忙翻譯一下每一個參數的含義,有問題討論也歡迎在這裏回帖 ^_^

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

Supply BASIC Authentication credentials to the server. The username and password are separated by a single : and sent on the wire base64 encoded. The string is sent regardless of whether the server needs it (i.e., has sent an 401 authentication needed).

-c concurrency

Number of multiple requests to perform at a time. Default is one request at a time.

-C cookie-name=value

Add a Cookie: line to the request. The argument is typically in the form of a name=value pair. This field is repeatable.

-d

Do not display the "percentage served within XX [ms] table". (legacy support).

-e csv-file

Write a Comma separated value (CSV) file which contains for each percentage (from 1% to 100%) the time (in milliseconds) it took to serve that percentage of the requests. This is usually more useful than the 'gnuplot' file; as the results are already 'binned'.

-g gnuplot-file

Write all measured values out as a 'gnuplot' or TSV (Tab separate values) file. This file can easily be imported into packages like Gnuplot, IDL, Mathematica, Igor or even Excel. The labels are on the first line of the file.

-h

Display usage information.

-H custom-header

Append extra headers to the request. The argument is typically in the form of a valid header line, containing a colon-separated field-value pair (i.e., "Accept-Encoding: zip/zop;8bit").

-i

Do HEAD requests instead of GET.

-k

Enable the HTTP KeepAlive feature, i.e., perform multiple requests within one HTTP session. Default is no KeepAlive.

-n requests

Number of requests to perform for the benchmarking session. The default is to just perform a single request which usually leads to non-representative benchmarking results.

-p POST-file

File containing data to POST.

-P proxy-auth-username:password

Supply BASIC Authentication credentials to a proxy en-route. The username and password are separated by a single : and sent on the wire base64 encoded. The string is sent regardless of whether the proxy needs it (i.e., has sent an 407 proxy authentication needed).

-q

When processing more than 150 requests, ab outputs a progress count on stderr every 10% or 100 requests or so. The -q flag will suppress these messages.

-s

When compiled in (ab -h will show you) use the SSL protected https rather than the http protocol. This feature is experimental and very rudimentary. You probably do not want to use it.

-S

Do not display the median and standard deviation values, nor display the warning/error messages when the average and median are more than one or two times the standard deviation apart. And default to the min/avg/max values. (legacy support).

-t timelimit

Maximum number of seconds to spend for benchmarking. This implies a -n 50000 internally. Use this to benchmark the server within a fixed total amount of time. Per default there is no timelimit.

-T content-type

Content-type header to use for POST data.

-v verbosity

Set verbosity level - 4 and above prints information on headers, 3 and above prints response codes (404, 200, etc.), 2 and above prints warnings and info.

-V

Display version number and exit.

-w

Print out results in HTML tables. Default table is two columns wide, with a white background.

-x <table>-attributes

String to use as attributes for <table>. Attributes are inserted <table here >.

-X proxy[:port]

Use a proxy server for the requests.

-y <tr>-attributes

String to use as attributes for <tr>.

-z <td>-attributes

String to use as attributes for <td>.

相關連接

ab 是 Apache 的一個安裝組件,因此須要下載 Apache 安裝後才能使用,能夠訪問 Apache 的項目主頁來下載 http://httpd.apache.org/download.cgi

ab 的更多信息能夠參加 Apache 主頁上的描述

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

相關文章
相關標籤/搜索