ApacheBench(以下、ab)はApacheに付属する負荷テストツールです。負荷テストツールとしてはJMeterなどが有名ですが、abはApacheがインストールされていれば使えるという手軽さから、ちょっとした性能測定に重宝します。
よく使うオプションは同時接続数とリクエスト数です。
$ ab -c <同時接続数> -n <リクエスト数> <接続先URL>
同時接続数100、リクエスト数100でテストしてみました。接続先URLは/で終わっている必要があります。
$ ab -c 100 -n 100 http://www.tetsuyai.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 2006 The Apache Software Foundation, http://www.apache.org/
Benchmarking www.tetsuyai.com (be patient).....done
Server Software: Apache/2.2.3
Server Hostname: www.tetsuyai.com
Server Port: 80
Document Path: /
Document Length: 27 bytes
Concurrency Level: 100
Time taken for tests: 0.779089 seconds
Complete requests: 100
Failed requests: 0
Write errors: 0
Non-2xx responses: 100
Total transferred: 37104 bytes
HTML transferred: 2700 bytes
Requests per second: 128.36 [#/sec] (mean)
Time per request: 779.089 [ms] (mean)
Time per request: 7.791 [ms] (mean, across all concurrent requests)
Transfer rate: 46.21 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 4 2.0 5 8
Processing: 158 467 127.2 435 774
Waiting: 157 466 127.1 434 773
Total: 158 471 128.1 440 775
Percentage of the requests served within a certain time (ms)
50% 440
66% 495
75% 604
80% 617
90% 644
95% 751
98% 768
99% 775
100% 775 (longest request)
オプションなしで起動するとヘルプが表示されます。
$ ab
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
-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)