How to: Measure the Lateceny and Throughput of Apache / Lighttpd / IIS Webserver

Q. I can measure network throughput and packet loss using standard UNIX / Linux command line utilities. How do I find out the lateceny and throughput of a web server like Apache under Linux?

A. You need to use the program called httping. It allows you to measure the latency of a webserver and the throughput.

Task: Ping the webserver on host

Use the following command for measuring the latency. Press CTRL+c to exit the program. It will display a summary of what was measured.
$ httping -g

connected to, seq=0 time=981.08 ms 
connected to, seq=1 time=709.92 ms 
connected to, seq=2 time=1072.02 ms 
connected to, seq=3 time=903.81 ms 
connected to, seq=4 time=607.84 ms 
connected to, seq=5 time=660.01 ms 
connected to, seq=6 time=730.12 ms 
connected to, seq=7 time=781.49 ms 

The -g url option use selects the url to probe / ping. You can also specify the port with -p port option:
$ httping -g -p 81
You can also connect using SSL, for this to work you need to give a https url or a 443 portnumber:
$ httping -l -g
$ httping -g -p 443

Task: Measure throughput of a webserver

The -G option force GET request instead of a HEAD request – this means that also the complete page/file must be transferred. You also need to pass the -b option with -G option to get the transferspeed (in KB/s).
$ httping -Gbg

connected to, seq=0 time=1738.39 ms  22KB/s
connected to, seq=1 time=1650.19 ms  20KB/s
connected to, seq=2 time=1759.65 ms  17KB/s
connected to, seq=3 time=1589.98 ms  21KB/s
connected to, seq=4 time=3709.87 ms  6KB/s
connected to, seq=5 time=3329.69 ms  7KB/s
--- ping statistics ---
53 connects, 53 ok, 0.00% failed
round-trip min/avg/max = 1451.9/2013.6/11656.0 ms
Transfer speed: min/avg/max = 6/19/24 KB

Please note above in above command you’re no longer measuring the latency!

You can also pass -X option with -G to show the amount of data transferred (excluding the headers):
$ httping -XGbg

connected to, seq=0 time=1576.11 ms  22KB/s 19KB
connected to, seq=1 time=2620.26 ms  9KB/s 19KB
connected to, seq=2 time=1507.69 ms  23KB/s 19KB
connected to, seq=3 time=1522.08 ms  24KB/s 19KB
connected to, seq=4 time=1533.68 ms  23KB/s 19KB
connected to, seq=5 time=1581.92 ms  21KB/s 19KB
connected to, seq=6 time=1512.06 ms  24KB/s 19KB
--- ping statistics ---
7 connects, 7 ok, 0.00% failed
round-trip min/avg/max = 1507.7/1693.4/2620.3 ms
Transfer speed: min/avg/max = 9/21/24 KB

Test remote server CPU

The -B option along with -G option ask the HTTP server to compress the returned data – this will reduce the influence of the bandwidth of your connection while increasing the influence of the processorpower of the HTTP server.
$ httping -BGg

Flood Webserver

The -f option used to flood ping i.e. do not sit idle between each ping but ping as fast as the computer and network allow you to (don’t run this on production or 3rd party servers):
$ httping -fg

🐧 Get the latest tutorials on Linux, Open Source & DevOps via RSS feed or Weekly email newsletter.

🐧 2 comments so far... add one

CategoryList of Unix and Linux commands
File Managementcat
FirewallAlpine Awall CentOS 8 OpenSUSE RHEL 8 Ubuntu 16.04 Ubuntu 18.04 Ubuntu 20.04
Network Utilitiesdig host ip nmap
OpenVPNCentOS 7 CentOS 8 Debian 10 Debian 8/9 Ubuntu 18.04 Ubuntu 20.04
Package Managerapk apt
Processes Managementbg chroot cron disown fg jobs killall kill pidof pstree pwdx time
Searchinggrep whereis which
User Informationgroups id lastcomm last lid/libuser-lid logname members users whoami who w
WireGuard VPNAlpine CentOS 8 Debian 10 Firewall Ubuntu 20.04
2 comments… add one
  • Raju Nov 22, 2007 @ 7:05

    Thanks for this tip, I was just wondering if you could write about measuring network performance and find out what is affecting my network throughput and packet loss

  • Basilos Jun 4, 2015 @ 8:01

    Thank you for the tips, really helpful. Does httping report packet loss?

Leave a Reply

Your email address will not be published.

Use HTML <pre>...</pre> for code samples. Problem posting comment? Email me @