how to Use the ab Command for Load Testing
5/5 - (13 votes)

Last Updated on April 1, 2023 by Vikash Ekka

The ab command, also known as Apache Bench, is a popular tool for testing the performance of web servers. It allows you to simulate high levels of traffic to a server and measure its response time, throughput, and other performance metrics.

The syntax of the ab command is as follows:

ab [options] [http[s]://]hostname[:port]/path

The options available for ab are:

  • -n: The number of requests to send to the server. For example, -n 100 would send 100 requests.
  • -c: The number of requests to send concurrently. For example, -c 10 would send 10 requests at a time.
  • -t: The amount of time to run the test in seconds. For example, -t 60 would run the test for 60 seconds.
  • -k: Use HTTP keep-alive feature for requests.

There are several other options available for ab, which you can find in the ab manual page.

How to Use Apache bench for Load Testing

To use ab, you first need to have it installed on your system. On Linux systems, you can install it using your package manager.

For more details you can check official Apache page

For example, on Ubuntu, you can install it by running the following command:

sudo apt-get install apache2-utils

Once ab is installed, you can use it to test the performance of a web server.

Run Apache bench load testing

To test the performance of a web server at http://example.com/, you can run the following command:

ab -n 1000 -c 50 http://example.com/

This will send 1000 requests to http://example.com/ with 50 requests being sent concurrently. The output of the command will show the response time and other performance metrics for each request, as well as an overall summary of the test.

It’s important to note that the results of a ab test may not accurately reflect the performance of a web server under normal conditions. ab simulates a high volume of traffic to the server, which may not reflect the behavior of real users. Additionally, the results may be affected by factors such as network latency and server load.

Also Read

How to Hide Apache, Nginx, or PHP version on Ubuntu

How To Install phpMyAdmin on Ubuntu 22.04 with Apache

How to Uninstall PHP, Apache and MySQL on Ubuntu 20.04 LTS

OUTPUT

This output shows the results of a load testing command run using ApacheBench (ab). The command was used to test the performance of a website located at https://www.vetechno.in.

vikash@vetechno:~$ ab -n 10000 -c 550 https://vetechno.in/
This is ApacheBench, Version 2.3 <$Revision: 1879490 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking vetechno.in (be patient)
Completed 1000 requests
Completed 2000 requests
Completed 3000 requests
Completed 4000 requests
Completed 5000 requests
Completed 6000 requests
Completed 7000 requests
Completed 8000 requests
Completed 9000 requests
Completed 10000 requests
Finished 10000 requests


Server Software:        Apache
Server Hostname:        vetechno.in
Server Port:            443
SSL/TLS Protocol:       TLSv1.2,ECDHE-RSA-AES128-GCM-SHA256,2048,128
Server Temp Key:        ECDH P-256 256 bits
TLS Server Name:        vetechno.in

Document Path:          /
Document Length:        8053 bytes

Concurrency Level:      550
Time taken for tests:   133.840 seconds
Complete requests:      10000
Failed requests:        1263
   (Connect: 0, Receive: 0, Length: 1263, Exceptions: 0)
Non-2xx responses:      1263
Total transferred:      79945776 bytes
HTML transferred:       70525777 bytes
Requests per second:    74.72 [#/sec] (mean)
Time per request:       7361.216 [ms] (mean)
Time per request:       13.384 [ms] (mean, across all concurrent requests)
Transfer rate:          583.32 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:      628  904 537.2    774    5620
Processing:   260 5984 12539.6   2293   78755
Waiting:      259 5979 12539.5   2293   78751
Total:        941 6888 12698.6   3116   82343

Percentage of the requests served within a certain time (ms)
  50%   3116
  66%   5059
  75%   6897
  80%  10210
  90%  11084
  95%  15876
  98%  72973
  99%  76207
 100%  82343 (longest request)

The test was performed by making 10,000 requests with a concurrency level of 550 (meaning 550 requests were sent simultaneously), and the results indicate that the test took 133.84 seconds to complete, with an average of 74.72 requests per second. However, there were 1,263 failed requests with non-2xx responses. The output also provides additional details on server software, hostname, port, SSL/TLS protocol, document path and length, and connection times, including the minimum, mean, median, maximum, and standard deviation. Finally, the percentage of requests served within certain time intervals is shown, ranging from 50% to 100%, with the longest request taking 82,343 milliseconds.

Conclusion

The ab command is a useful tool for testing the performance of web servers. It allows you to simulate high levels of traffic and measure response time, throughput, and other performance metrics. However, it should be used with caution and in conjunction with other testing tools to get a more accurate picture of server performance.

By Vikash Ekka

Hi All, My name is Vikash Ekka from India. I’m the founder and tech editor of https://www.vetechno.in. I have completed my Graduation in BCA. I love to write technical articles like Windows, Linux & MAC Tutorials, Tips, Tricks, How To fix, Tutorials About Ethical Hacking & Cyber Security Guide, and Software Review. Currently, I have been working as an IT professional since 2018.

Leave a Reply

Your email address will not be published. Required fields are marked *