ab(ApacheBench)是Apache自帶的超文本傳輸協(xié)議(HTTP)性能測(cè)試工具。 其設(shè)計(jì)意圖是描繪當(dāng)前所安裝的Apache的執(zhí)行性能, 主要是顯示你安裝的Apache每秒可以處理多少個(gè)請(qǐng)求。
2 使用
2.1 安裝
Apache服務(wù)器套件自帶ab,只要安裝Apache即可,無(wú)需另行安裝ab。ab位于%ApacheHome%/bin目錄下(“%ApacheHome%”為Aapche安裝路徑),你也可以把a(bǔ)b.exe文件copy出來(lái),獨(dú)立使用。
2.2 參數(shù)列表
-A auth-username:password
:
"隔開,并將被以base64編碼形式發(fā)送。無(wú)論服務(wù)器是否需要(即是否發(fā)送了401認(rèn)證需求代碼),此字符串都會(huì)被發(fā)送。 -c concurrency
-C cookie-name=value
Cookie:
"頭行。其典型形式是 name=value
的一個(gè)參數(shù)對(duì)。此參數(shù)可以重復(fù)。 -d
-e csv-file
-g gnuplot-file
-h
-H custom-header
"Accept-Encoding: zip/zop;8bit"
)。 -i
HEAD
請(qǐng)求,而不是GET
。 -k
-n requests
-p POST-file
-P proxy-auth-username:password
:
"隔開,并將被以base64編碼形式發(fā)送。無(wú)論服務(wù)器是否需要(即是否發(fā)送了407代理認(rèn)證需求代碼),此字符串都會(huì)被發(fā)送。 -q
ab
每處理大約10%或者100個(gè)請(qǐng)求時(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
-t timelimit
-n 50000
"。它可以使對(duì)服務(wù)器的測(cè)試限制在一個(gè)固定的總時(shí)間以內(nèi)。默認(rèn)時(shí),沒(méi)有時(shí)間限制。 -T content-type
-v verbosity
4
或更大值會(huì)顯示頭信息,3
或更大值可以顯示響應(yīng)代碼(404,200等),2
或更大值可以顯示警告和其他信息。 -V
-w
-x <table>-attributes
<table>
屬性的字符串。此屬性被填入<table 這里 >
。 -X proxy[:port]
-y <tr>-attributes
<tr>
屬性的字符串。 -z <td>-attributes
<td>
屬性的字符串。 以上參數(shù)最常用的是-n 在測(cè)試會(huì)話中所執(zhí)行的請(qǐng)求個(gè)數(shù);和-c 一次同時(shí)產(chǎn)生的并發(fā)請(qǐng)求個(gè)數(shù)。
2.3 實(shí)例
假設(shè)我們要測(cè)試一下本網(wǎng)站,其中一個(gè)性能測(cè)試用例是:“同時(shí)處理50個(gè)并發(fā)請(qǐng)求并運(yùn)行 100 次index.php 首頁(yè)”,我們可以在cmd shell中輸入 ab -n 1000 -c 50 http://m.jartj.cn/index.php,運(yùn)行結(jié)束后,ab會(huì)自動(dòng)顯示測(cè)試結(jié)果,如下:
C:\wamp\Apache2\bin>ab -n 100 -c 50 http://m.jartj.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 m.jartj.cn (be patient).....done
Server Software: Apache/2.0.52
Server Hostname: m.jartj.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è)請(qǐng)求的情況下,完成100次的訪問(wèn)請(qǐng)求,共花了66.328125秒,這個(gè)程序每秒可處理1.51個(gè)請(qǐng)求。
2.4 問(wèn)題
在實(shí)際使用中,我發(fā)現(xiàn)-c 參數(shù),即一次同時(shí)產(chǎn)生的并發(fā)請(qǐng)求個(gè)數(shù)最多設(shè)置成64,大于等于65就會(huì)報(bào)錯(cuò),不知道為什么。
]]>2,打開Apache的安裝目錄,找到httpd.conf文件,分別去掉下面兩行文字前面的#號(hào)?! ?br />
#LoadModule vhost_alias_module modules/mod_vhost_alias.so
去掉#意思是啟用apache的虛擬主機(jī)功能?! ?br />
#Include conf/extra/httpd-vhosts.conf
去掉這一行的#意思是從conf/extra/httpd-vhosts.conf這個(gè)文件導(dǎo)入虛擬主機(jī)配置。
3,打開extra目錄內(nèi)的httpd-vhosts.conf文件,把默認(rèn)的配置
ServerAdmin webmaster@dummy-host.localhost
DocumentRoot "/www/docs/dummy-host.localhost"
ServerName dummy-host.localhost
ServerAlias www.dummy-host.localhost
ErrorLog "logs/dummy-host.localhost-error_log"
CustomLog "logs/dummy-host.localhost-access_log common"
ServerAdmin webmaster@dummy-host2.localhost
DocumentRoot "/www/docs/dummy-host2.localhost"
ServerName dummy-host2.localhost
ErrorLog "logs/dummy-host2.localhost-error_log"
CustomLog "logs/dummy-host2.localhost-access_log common"
改成自己想要的目錄和域名
ServerAdmin webmaster@dummy-host.localhost
DocumentRoot "D:/wamp/www/"
ServerName localhost
ServerAlias localhost
ErrorLog "logs/localhost-error_log"
ServerAdmin webmaster@dummy-host.localhost
DocumentRoot "D:/wamp/www/web/"
ServerName test.com (填主域名)
ServerAlias *.test.com (這里的服務(wù)器別名可以支持泛解析)
ErrorLog "logs/localhost-error_log"
如果 弄完之后 出現(xiàn)403錯(cuò)誤 那 在httpd.conf里找到:
Options FollowSymLinks ExecCGI Indexes
AllowOverride None
Order deny,allow
Deny from all
Satisfy all
更改為
Options FollowSymLinks ExecCGI Indexes
AllowOverride None
# Order deny,allow
# Deny from all
# Satisfy all