最優(yōu)良人 » ApacheBench http://www.dgkai.cn/blog 中山php|最優(yōu)網(wǎng)絡(luò) Mon, 13 May 2013 04:56:43 +0000 en hourly 1 http://wordpress.org/?v=3.1.4 Apache自帶的ab(ApacheBench)性能測試工具對網(wǎng)站進(jìn)行訪問壓力測試 http://www.dgkai.cn/blog/view-329.html http://www.dgkai.cn/blog/view-329.html#comments Fri, 10 Feb 2012 01:07:37 +0000 lin http://www.dgkai.cn/blog/?p=329 1 概述

ab(ApacheBench)是Apache自帶的超文本傳輸協(xié)議(HTTP)性能測試工具。 其設(shè)計(jì)意圖是描繪當(dāng)前所安裝的Apache的執(zhí)行性能, 主要是顯示你安裝的Apache每秒可以處理多少個(gè)請求。

2 使用
2.1 安裝

Apache服務(wù)器套件自帶ab,只要安裝Apache即可,無需另行安裝ab。ab位于%ApacheHome%/bin目錄下(“%ApacheHome%”為Aapche安裝路徑),你也可以把a(bǔ)b.exe文件copy出來,獨(dú)立使用。

2.2 參數(shù)列表

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

以上參數(shù)最常用的是-n 在測試會(huì)話中所執(zhí)行的請求個(gè)數(shù);和-c 一次同時(shí)產(chǎn)生的并發(fā)請求個(gè)數(shù)。

2.3 實(shí)例

假設(shè)我們要測試一下本網(wǎng)站,其中一個(gè)性能測試用例是:“同時(shí)處理50個(gè)并發(fā)請求并運(yùn)行 100 次index.php 首頁”,我們可以在cmd shell中輸入 ab -n 1000 -c 50 http://www.dgkai.cn/index.php,運(yùn)行結(jié)束后,ab會(huì)自動(dòng)顯示測試結(jié)果,如下:

C:\wamp\Apache2\bin>ab -n 100 -c 50 http://www.dgkai.cn/index.php
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 2006 The Apache Software Foundation, http://www.apache.org/

Benchmarking www.dgkai.cn (be patient).....done
Server Software: Apache/2.0.52
Server Hostname: www.dgkai.cn
Server Port: 80

Document Path: /index.php
Document Length: 21380 bytes

Concurrency Level: 50
Time taken for tests: 66.328125 seconds
Complete requests: 100
Failed requests: 15
(Connect: 0, Length: 15, Exceptions: 0)
Write errors: 0
Non-2xx responses: 15
Total transferred: 1856980 bytes
HTML transferred: 1822145 bytes
Requests per second: 1.51 [#/sec] (mean)
Time per request: 33164.063 [ms] (mean)
Time per request: 663.281 [ms] (mean, across all concurrent requests)
Transfer rate: 27.33 [Kbytes/sec] received

Connection Times (ms)
min mean[+/-sd] median max
Connect: 31 41 8.5 46 62
Processing: 32 20242 9776.5 22015 43890
Waiting: 31 1637 1327.6 1156 6078
Total: 78 20283 9778.3 22046 43921

Percentage of the requests served within a certain time (ms)
50% 22046
66% 24812
75% 26656
80% 27796
90% 30421
95% 30734
98% 31921
99% 43921
100% 43921 (longest request)

C:\wamp\Apache2\bin>

以上結(jié)果指出,在并發(fā)50個(gè)請求的情況下,完成100次的訪問請求,共花了66.328125秒,這個(gè)程序每秒可處理1.51個(gè)請求。

2.4 問題

在實(shí)際使用中,我發(fā)現(xiàn)-c 參數(shù),即一次同時(shí)產(chǎn)生的并發(fā)請求個(gè)數(shù)最多設(shè)置成64,大于等于65就會(huì)報(bào)錯(cuò),不知道為什么。

]]>
http://www.dgkai.cn/blog/view-329.html/feed 205