負荷テストAB(Apache Bench)を使ってみる。
Posted on 2010/09/27
|
No Comments
ベンチの事を書いたので、負荷テストツールを使ってみます。
負荷テストツールで有名な物は、
- JMeter
- AB
- もろもろ
今回はお手軽なAB(Apache Bench)を利用してWEBサーバの性能測定をしてみます。
ABは、Apacheがインストールされていれば標準でついてくると思いますので、
早速実行してみましょう。
[root@localhost ~]# ab -h 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 -p postfile File containing data to POST -T content-type Content-type header for POSTing -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 -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)
-n で接続回数、-cで同時接続数がよくある形なので、
1000回、同時接続を100想定で負荷試験を実行してみます。
ちなみに今回、muninのグラフサイトを目標に同一サーバ上から実行しました。
[root@localhost ~]# ab -n 1000 -c 100 http://localhost/munin/localhost/localhost.html 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 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 Server Hostname: localhost Server Port: 80 Document Path: /munin/localhost/localhost.html Document Length: 12299 bytes Concurrency Level: 100 Time taken for tests: 0.307760 seconds Complete requests: 1000 Failed requests: 0 Write errors: 0 Total transferred: 12537000 bytes HTML transferred: 12299000 bytes Requests per second: 3249.29 [#/sec] (mean) Time per request: 30.776 [ms] (mean) Time per request: 0.308 [ms] (mean, across all concurrent requests) Transfer rate: 39781.00 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 0 1.8 0 10 Processing: 4 28 6.7 28 45 Waiting: 3 27 6.7 28 44 Total: 4 28 6.4 29 45 Percentage of the requests served within a certain time (ms) 50% 29 66% 30 75% 30 80% 31 90% 40 95% 43 98% 44 99% 44 100% 45 (longest request)
結果が流れてきました。
Server Software: で使用しているwebserverの種類が判ります。
Complete requests: で完了したリクエスト、Failed requests: で失敗したリクエスト数が判ります。
Failedが有るようであれば、試行したリクエストが実際に発生した場合は正常にレスポンスを返す事が出来ない可能性がありますので、チューニングの必要性があるかも知れません。
Requests per second: で1秒間に処理出来るリクエスト数が判ります。
Connection Times で、処理の内訳をConnect, Processing, Waitingで見る事が可能です。
今回、テスト先が静的なhtmlでしたので、値として面白い物は出ていませんが、
動的に生成されたページに対してリクエストを行うと、より使えるデータが取得出来るのではないかと思います。
と、言う事で最後にこのblogに対して行った結果を載せておきます。
注意:負荷試験を行う時は、オプション指定を確認しましょう。
[root@localhost conf]# ab -n 100 -c 10 http://blog.ho10.info/ 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 blog.ho10.info (be patient).....done Server Software: GSE Server Hostname: blog.ho10.info Server Port: 80 Document Path: / Document Length: 113391 bytes Concurrency Level: 10 Time taken for tests: 3.349053 seconds Complete requests: 100 Failed requests: 69 (Connect: 0, Length: 69, Exceptions: 0) Write errors: 0 Non-2xx responses: 64 Total transferred: 4123429 bytes HTML transferred: 4092370 bytes Requests per second: 29.86 [#/sec] (mean) Time per request: 334.905 [ms] (mean) Time per request: 33.491 [ms] (mean, across all concurrent requests) Transfer rate: 1202.13 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 32 39 9.6 35 61 Processing: 161 283 186.8 190 1171 Waiting: 161 220 131.4 178 1030 Total: 194 322 187.0 244 1204 Percentage of the requests served within a certain time (ms) 50% 244 66% 354 75% 369 80% 398 90% 609 95% 713 98% 1132 99% 1204 100% 1204 (longest request)
GSE(Google Servlet Engineだったでしょうか)を利用していて、
1秒間の処理は29.86リクエスト、Failedが69リクエストに対して出ていますね。。。
google先生に怒られたくはないので、このへんで。
それでは。