ab is a tool for benchmarking web servers. It generate large amount of concurrent requests to a web site, simulating high traffic. This helps you identify how many visitors your web server able to handle.
ab -c 30 -n 10000 URL_OF_THE_SITE
Here we generate 30 concurrent requests. Total of 10K requests are made for the benchmarking session.
ab is part of Apache, you can find more details at
https://httpd.apache.org/docs/2.4/programs/ab.html
On Debian/Ubuntu, you can install ab with
apt install -y apache2-utils
Here is a sample benchmark result. Apache vs Nginx
boby@hon-pc-01:~$ ab -c 50 -n 1000 http://localhost:8080/ This is ApacheBench, Version 2.3 <$Revision: 1706008 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to 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 Completed 1000 requests Finished 1000 requests Server Software: nginx/1.11.5 Server Hostname: localhost Server Port: 8080 Document Path: / Document Length: 21 bytes Concurrency Level: 50 Time taken for tests: 0.075 seconds Complete requests: 1000 Failed requests: 0 Total transferred: 252000 bytes HTML transferred: 21000 bytes Requests per second: 13292.75 [#/sec] (mean) Time per request: 3.761 [ms] (mean) Time per request: 0.075 [ms] (mean, across all concurrent requests) Transfer rate: 3271.26 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 1 0.8 1 4 Processing: 1 3 1.4 2 7 Waiting: 0 2 1.5 2 7 Total: 2 4 1.2 3 7 Percentage of the requests served within a certain time (ms) 50% 3 66% 4 75% 4 80% 5 90% 5 95% 6 98% 7 99% 7 100% 7 (longest request) boby@hon-pc-01:~$ ab -c 50 -n 1000 http://localhost/ This is ApacheBench, Version 2.3 <$Revision: 1706008 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to 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 Completed 1000 requests Finished 1000 requests Server Software: Apache/2.4.18 Server Hostname: localhost Server Port: 80 Document Path: / Document Length: 21 bytes Concurrency Level: 50 Time taken for tests: 0.687 seconds Complete requests: 1000 Failed requests: 0 Total transferred: 267000 bytes HTML transferred: 21000 bytes Requests per second: 1454.55 [#/sec] (mean) Time per request: 34.375 [ms] (mean) Time per request: 0.687 [ms] (mean, across all concurrent requests) Transfer rate: 379.26 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 0 0.5 0 3 Processing: 2 34 129.6 4 601 Waiting: 2 34 128.8 4 600 Total: 2 34 130.0 4 602 Percentage of the requests served within a certain time (ms) 50% 4 66% 4 75% 6 80% 6 90% 7 95% 597 98% 601 99% 601 100% 602 (longest request) boby@hon-pc-01:~$
If you check Percentage of the requests served within a certain time (ms), you will see Nginx was able to service all requests under 7ms. With Apache, it take 597 ms or more for 95% of the 1000 request we made during the benchmark session.