HTTPING(1)

πŸ“¦
version 4.4.0 Β· 2 versions
, in debian trixie, ubuntu questing, ubuntu resolute, ubuntu stonking

✨ HTTPING β€” the girlies' guide to measuring webserver vibes ✨

okay so bestie, welcome to the HTTPING(1) manual page, from the General Commands Manual section πŸŽ€. this is httping, and she's here to tell you exactly how fast (or slow 😭) a webserver is being. let's go πŸ’…


🌸 NAME 🌸

httping β€” measure the latency and throughput of a webserver. yes, both. she does both. queen behavior πŸ‘‘


πŸ¦‹ SYNOPSIS πŸ¦‹

httping [options]

and the options menu, in all her glory (copying this verbatim because accuracy is the vibe):

options: [-g url] [-h hostname] [-p portnumber] [-x proxyhost:port] [-c
count] [-i interval] [-t timeout] [-s] [-G] [-b] [-L xferlimit] [-X]
[-l] [-z] [-f] [-m] [-o rc,...] [-e string] [-I useragent string] [-R
referer string] [-r] [-n warn,crit] [-N mode] [-q] [-V]

πŸ’– DESCRIPTION πŸ’–

so httping lets you measure the latency of a webserver. that's the main character job fr fr. and since version 1.0.6 she also measures the throughput πŸƒβ™€οΈπŸ’¨ β€” so you get the speed and the bandwidth. iconic. no cap.


✨ OPTIONS ✨

every single one. we don't skip options in this house πŸ’…

  • -5 β€” the proxy server you picked is a SOCKS5 server.
  • -6 β€” turn on IPv6 mode. default is IPv4, bestie.
  • -a β€” audible ping πŸ”” (she makes noise)
  • -b β€” use this together with -G. when it's on, the transferspeed (in KB/s) gets shown.
  • -B β€” use this together with -G. asks the HTTP server to compress the returned data πŸ—œοΈ. this reduces the influence of your connection's bandwidth while increasing the influence of the HTTP server's processorpower. trade-off, babes.
  • -c count β€” how many probes to send before exiting.
  • -D β€” do not draw graphs in ncurses mode (-K). no graphs, no drama.
  • -e str β€” when the status-code differs from the ones you selected with -o, the given string gets displayed.
  • -E β€” retrieve proxy settings from environment variables (http_proxy and https_proxy) 🌱
  • -F β€” attempt TCP Fast Open while trying to connect to a server (for Linux, version 3.7 onwards of the kernel). speedy connect, slay.
  • -f β€” Flood ping 🚿: she does not sit idle between each ping, she pings as fast as the computer and network allow you to. absolutely unhinged, we stan.
  • -G β€” do a GET request instead of a HEAD request: this means the complete page/file also has to be transferred. ⚠️ note that in this case you're no longer measuring the latency! different measurement, bestie.
  • -g url β€” this selects the url to probe. E.g.: http://localhost/
  • -h hostname β€” instead of -g you can also set a hostname to probe with -h: -h localhost
  • -I str β€” UserAgent-string to send to the webserver (instead of HTTPing <version>).
  • -i interval β€” how many seconds to sleep between every probe sent 😴
  • -K β€” enable ncurses user interface.
  • -L x β€” use this together with -G. limits the amount of data transferred to x. note that this only affects the content of the page/file and not the headerdata.
  • -l β€” connect using SSL πŸ”’: for this to work you need to give an https-url or a 443 portnumber.
  • -m β€” show machine readable output (also check -o and -e).
  • -N x β€” switches HTTPing to Nagios-plugin mode 2: return 0 when everything is fine, x when anything fails. E.g.: 1 => Nagios warning state, 2 => Nagios critical state.
  • -n warn,crit β€” switches HTTPing to Nagios-plugin mode 1: return exitcode 1 when the average response time is bigger then warn, return exitcode 2 when the average response time is bigger then crit. in all other cases return exitcode 0.
  • -o x,x,... β€” this selects the HTTP status-codes which are regarded as an OK-state (only with -m).
  • -p portnumber β€” -p can be used together with -h. -p selects the portnumber to probe.
  • -q β€” be quiet 🀫, only return an exit-code.
  • -R str β€” Referer-string to send to the webserver.
  • -Q β€” use a persistent connection, i.e. reuse the same TCP connection for multiple HTTP requests πŸ”. usually possible when Connection: Keep-Alive is sent by server. adds a C to the output if httping had to reconnect.
  • -r β€” only resolve the hostname once: this takes the resolving out of the loop so the latency of the DNS is not measured. also useful when you want to measure only 1 webserver while the DNS returns a different ip-address for each resolve (roundrobin).
  • -S β€” split measured latency in time to connect and time to exchange a request with the HTTP server. splits are returned in the following order: Resolve, Connect, Send, Receive, Disconnect.
  • -s β€” when a successfull transaction was done, show the HTTP statuscode (200, 404, etc.) βœ…
  • -T x β€” read the password for website authentication from file x (instead of entering it on the command line).
  • -t timeout β€” how long to wait for answer from the other side ⏳
  • -U β€” enable authentication against website. set username with -U, set password with -P (or -T to read the password from a file).
  • -v β€” increase verbosity mode. to show standard deviation and dates in output πŸ“…
  • -W β€” do not abort program if resolving fails. she's forgiving like that 🫢
  • -X β€” use this together with -G. for each "ping" show the amount of data transferred (excluding the headers).
  • -x proxyhost[:port] β€” probe using a proxyserver. ⚠️ note that you're also measuring the latency of the proxyserver!
  • -Y β€” enable colors 🌈
  • -z β€” when connecting using SSL, display the fingerprint of the X509 certificate(s) of the peer πŸ”
  • --abbreviate β€” abbreviate values bigger than thousand, million, billion, etc.
  • --adaptive-interval or --ai β€” (try to) ping on the same interval. E.g. if interval is set to 1.0 seconds and a ping t[n] occurs at 500s with duration 250ms, then the next ping (t[n+1]) will happen at 501 seconds and not at 501.25 seconds. of course when the ping duration is bigger than the interval, a ping will be "skipped" (not literally: the sequence number will continue) and t[n+1] will then be e.g. 502s instead of the expected 501s. this is useful for example in the ncurses output mode where an fft is calculated over the ping times πŸ“ˆ
  • --aggregates x[,y[,z[,etc.]]] β€” show aggregates every x[/y[/z[/etc]]] seconds.
  • --divert-connect x β€” ignore the hostname in the URL and connect to x instead. the given URL will be requested at x.
  • --draw-phase β€” not only draw the magnitude of the fourier transform, draw the phase as well 🌊
  • --graph-limit x β€” if values measured are bigger than x, then they're limitted to x.
  • --header x β€” add an additional request-header x.
  • --keep-cookies β€” when the server sends a cookie πŸͺ, it will be returned in the next request.
  • --max-mtu x β€” maximum MTU to use. cannot be larger than network interface MTU.
  • --median β€” calculate median.
  • --no-host-header β€” do not put a Host:-header in the request header.
  • --no-tcp-nodelay β€” do not disable "tcp delay" (Naggle).
  • --priority x β€” set priority of packets.
  • --tos x β€” set type of service.
  • --proxy-user x β€” use username x to authenticate against proxy (http/socks5) server (optional).
  • --proxy-password x β€” use password x to authenticate against proxy (http/socks5) server (optional).
  • --proxy-password-file x β€” read password from file x to authenticate against proxy (http/socks5) server (optional).
  • --recv-buffer x β€” set the size of the receive buffer (in bytes).
  • --slow-log x β€” when the duration is x or more, show ping line in the slow log window (the middle window).
  • --threshold-red x β€” if the measured threshold is higher than x (and -Y is given), then the shown value is colored red. if you also use --threshold-yellow, then this value must be bigger.
  • --threshold-yellow x β€” if the measured threshold is higher than x (and -Y is given), then the shown value is colored yellow.
  • --threshold-show x β€” if the measured threshold is higher than x, then the result is shown (default is show always). the value x is in ms.
  • --timestamp or --ts β€” put a timestamp before the result-lines. use -v to also show a date ⏰
  • --tx-buffer x β€” set the size of the transmit buffer (in bytes).
  • -V β€” show the version and exit πŸ‘‹

πŸ’œ OUTPUT πŸ’œ

in split mode (-S) you get something like:

time=0.08+24.09+23.17+15.64+0.02=62.98 ms

so let's break down that little lineup, bestie:

  • the first value is the time it took to resolve the hostname (or n/a if it did not resolve in this iteration, e.g. in "resolve once" (-r) mode)
  • then the time it took to connect (or -1 for example in persistent connection (-Q, HTTP v1.1))
  • after that, the time it took to put the request on the wire
  • then the time it took for the HTTP server to process the request and send it back
  • and lastly the time it took to close the connection

five little timestamps, one big vibe check πŸ”₯


🌈 GRAPH 🌈

the graph in the ncurses uses colors to encode a meaning, and honestly the color story is so good:

  • Green: value is less than 1 block.
  • Red: the value did not fit in the graph.
  • Blue: the value was limitted by --graph-limit.
  • Cyan: no measurement for that point in time.

πŸŽ€ KEYS πŸŽ€

press <CTRL> + <c> to exit the program. she'll display a summary of what was measured before she goes πŸ’…

in the ncurses gui:

  • press <CTRL> + <l> to forcibly redraw the screen πŸ–ŒοΈ
  • press H to halt the graphs (and again to continue) ⏸️
  • press q to stop the program (<CTRL> + <c> will work too)

🧚 EXAMPLES 🧚

httping -g http://localhost/ ping the webserver on host localhost.

httping -h localhost -p 1000 ping the webserver on host localhost and portnumber 1000.

httping -l -g https://localhost/ ping the webserver on host localhost using an SSL connection πŸ”’

httping -g http://localhost/ -U username -P password ping the webserver on host localhost using the Basic HTTP Authentication.


πŸ’€ BUGS πŸ’€

None. This program is totally bug-free. 😌✨ (she said, with her whole chest. we believe her. periodt.)


πŸ”₯ SEE ALSO πŸ”₯

http://www.vanheusden.com/httping/


πŸ“ NOTES πŸ“

this page describes httping as found in the httping-2.3 package; other versions may differ slightly. please mail corrections and additions to mail@vanheusden.com. report bugs in the program to mail@vanheusden.com. πŸ“¬


and that's the whole thing bestie 🫢 this page is from the httping package, version 2.3, dated 2023-09 β€” aka the HTTPING(1) manual. now go measure something and slay πŸ’–βœ¨

πŸ“¦ where this page comes from