我們知道壓力測試的軟件確實很多,諸如微軟的WAST,惠普的LoadRunner以及等等其他的,但這些軟件學習起來還是需要花費些時間,在選擇上實在頭痛,后來在郭欣的那本《構建高性能WEB站點》上看到了他介紹的這款Apache自帶的壓力測試工具ab,十分喜愛,于是今天終于有機會體驗下ab對網站的壓力測試。 實驗之前我的apache已經安裝了,操作系統:Ubuntu 10.04 VMware 7.0
1、先查看一下版本信息 ab -V(注意是大寫的V)
studiogang@studiogang:~$ ab -V This is ApacheBench, Version 2.3 <$Revision: 655654 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/
studiogang@studiogang:~$ ab -v ab: option requires an argument -- v ab: wrong number of arguments Usage: ab [options] [http[s]://]hostname[:port]/path Options are: -n requests Number of requests to perform -c concurrency Number of multiple requests to make -t timelimit Seconds to max. wait for responses -b windowsize Size of TCP send/receive buffer, in bytes -p postfile File containing data to POST. Remember also to set -T -u putfile File containing data to PUT. Remember also to set -T -T content-type Content-type header for POSTing, eg. 'application/x-www-form-urlencoded' Default is 'text/plain' -v verbosity How much troubleshooting info to print -w Print out results in HTML tables -i Use HEAD instead of GET -x attributes String to insert as table attributes -y attributes String to insert as tr attributes -z attributes String to insert as td or th attributes -C attribute Add cookie, eg. 'Apache=1234. (repeatable) -H attribute Add Arbitrary header line, eg. 'Accept-Encoding: gzip' Inserted after all normal header lines. (repeatable) -A attribute Add Basic WWW Authentication, the attributes are a colon separated username and password. -P attribute Add Basic Proxy Authentication, the attributes are a colon separated username and password. -X proxy:port Proxyserver and port number to use -V Print version number and exit -k Use HTTP KeepAlive feature -d Do not show percentiles served table. -S Do not show confidence estimators and warnings. -g filename Output collected data to gnuplot format file. -e filename Output CSV file with percentages served -r Don't exit on socket receive errors. -h Display usage information (this message) -Z ciphersuite Specify SSL/TLS cipher suite (See openssl ciphers) -f protocol Specify SSL/TLS protocol (SSL2, SSL3, TLS1, or ALL)
studiogang@studiogang:~$ ab -n1000 -c10 http://www.51cto.com/index.php This is ApacheBench, Version 2.3 <$Revision: 655654 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/ Benchmarking www.51cto.com (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 Completed 1000 requests Finished 1000 requests /*WEB服務器用的是nginx*/Server Software: nginx Server Hostname: www.51cto.com Server Port: 80 Document Path: /index.php Document Length: 154 bytes Concurrency Level: 10 Time taken for tests: 74.373 seconds Complete requests: 1000 Failed requests: 0 Write errors: 0 Non-2xx responses: 1000 Total transferred: 330000 bytes HTML transferred: 154000 bytes/*大家最關心的指標之一,指的是吞吐率相當于 LR 中的 每秒事務數 ,后面括號中的 mean 表示這是一個平均值*/ Requests per second: 13.45 [#/sec] (mean)/*大家最關心的指標之二,指的是用戶平均請求等待時間相當于 LR 中的 平均事務響應時間 ,后面括號中的 mean 表示這是一個平均值*/ Time per request: 743.726 [ms] (mean) /*大家最關心的指標之三,指的是服務器平均請求處理時間Time per request: 74.373 [ms] (mean, across all concurrent requests) Transfer rate: 4.33 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 129 163 245.3 145 3154 Processing: 129 576 1510.8 147 11756 Waiting: 129 567 1502.0 147 11756 Total: 261 739 1543.7 294 11888 Percentage of the requests served within a certain time (ms) 50% 294 66% 297 75% 304 80% 308 90% 1290 95% 3452 98% 7582 99% 7962 100% 11888 (longest request)
Requests per second: 190.95 [#/sec] (mean) Time per request: 523.694 [ms] (mean) Time per request: 5.237 [ms] (mean, across all concurrent requests)
Requests per second: 186.00 [#/sec] (mean) Time per request: 1149.433 [ms] (mean) Time per request: 5.747 [ms] (mean, across all concurrent requests)
Requests per second: 180.99 [#/sec] (mean) Time per request: 2631.662 [ms] (mean) Time per request: 5.263 [ms] (mean, across all concurrent requests)