Using 'ab', ApacheBench to test Web Server Performance
ApacheBench (referred to as 'ab' in the terminal) is a tool for testing web server performance by allowing you to test how long a set of requests per second the web server is capable of serving.
Whilst this does not reflect a model of real world usage, it can aid in the tweaking and performance improvement of the Web Server itself.
This tool is of course aimed at testing Apache servers, however it can be used on others.
Usage
Usage is rather simple. At it's core, the amount of requests to complete and the url to test are required. On top of this you may inform the application to carry out more than one request at a time, as show in the second example.
$ ab -n 100 http://domain/
$ ab -n 100 -c 3 http://domain/
When this is run the specified web page is downloaded and the time taken for it to happen is measured.
Some Results
These are the results I gained from running this against the server behind this, testing using 3 concurrent connections and 100 requests.
$ ab -n 100 -c 3 http://nickcharlton.net/
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 nickcharlton.net (be patient).....done
Server Software: Apache/2.2.3
Server Hostname: nickcharlton.net
Server Port: 80
Document Path: /
Document Length: 34350 bytes
Concurrency Level: 3
Time taken for tests: 13.371 seconds
Complete requests: 100
Failed requests: 0
Write errors: 0
Total transferred: 3471900 bytes
HTML transferred: 3435000 bytes
Requests per second: 7.48 [#/sec] (mean)
Time per request: 401.120 [ms] (mean)
Time per request: 133.707 [ms] (mean, across all concurrent requests)
Transfer rate: 253.58 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 27 135 160.8 87 1295
Processing: 65 257 562.0 140 5108
Waiting: 31 149 169.3 105 1297
Total: 104 392 617.4 254 5483
Percentage of the requests served within a certain time (ms)
50% 254
66% 317
75% 348
80% 510
90% 776
95% 920
98% 2311
99% 5483
100% 5483 (longest request)
Limitations
ApacheBench does not however give you a figure to suggest how many requests a server may complete, or reflect the usage which will be shown with a real set of users. This is because any given page or application may consist of many requests
What to do with the Results?
The results which you gain are specifically useful in tweaking settings regarding the web server itself. Whilst ApacheBench cannot directly tell you what needs tweaking, once you start changing settings you can realise what is best for your server.
My thanks go out to Ante for helping me improve this post, clearing up mistakes and ensuring that the right information was being given. This post has been slightly edited since it's original posting.