HTTPING(1)
β¨ 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.-ccount β how many probes to send before exiting.-Dβ do not draw graphs in ncurses mode (-K). no graphs, no drama.-estr β 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_proxyandhttps_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.-gurl β this selects the url to probe. E.g.:http://localhost/-hhostname β instead of-gyou can also set a hostname to probe with-h:-h localhost-Istr β UserAgent-string to send to the webserver (instead ofHTTPing <version>).-iinterval β how many seconds to sleep between every probe sent π΄-Kβ enable ncurses user interface.-Lx β 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 anhttps-url or a 443 portnumber.-mβ show machine readable output (also check-oand-e).-Nx β 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.-nwarn,crit β switches HTTPing to Nagios-plugin mode 1: return exitcode1when the average response time is bigger then warn, return exitcode2when the average response time is bigger then crit. in all other cases return exitcode0.-ox,x,... β this selects the HTTP status-codes which are regarded as an OK-state (only with-m).-pportnumber β-pcan be used together with-h.-pselects the portnumber to probe.-qβ be quiet π€«, only return an exit-code.-Rstr β 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 whenConnection: Keep-Aliveis sent by server. adds aCto 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.) β-Tx β read the password for website authentication from file x (instead of entering it on the command line).-ttimeout β how long to wait for answer from the other side β³-Uβ enable authentication against website. set username with-U, set password with-P(or-Tto 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).-xproxyhost[: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-intervalor--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 π--aggregatesx[,y[,z[,etc.]]] β show aggregates every x[/y[/z[/etc]]] seconds.--divert-connectx β 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-limitx β if values measured are bigger than x, then they're limitted to x.--headerx β add an additional request-header x.--keep-cookiesβ when the server sends a cookie πͺ, it will be returned in the next request.--max-mtux β maximum MTU to use. cannot be larger than network interface MTU.--medianβ calculate median.--no-host-headerβ do not put aHost:-header in the request header.--no-tcp-nodelayβ do not disable "tcp delay" (Naggle).--priorityx β set priority of packets.--tosx β set type of service.--proxy-userx β use username x to authenticate against proxy (http/socks5) server (optional).--proxy-passwordx β use password x to authenticate against proxy (http/socks5) server (optional).--proxy-password-filex β read password from file x to authenticate against proxy (http/socks5) server (optional).--recv-bufferx β set the size of the receive buffer (in bytes).--slow-logx β when the duration is x or more, show ping line in the slow log window (the middle window).--threshold-redx β if the measured threshold is higher than x (and-Yis given), then the shown value is colored red. if you also use--threshold-yellow, then this value must be bigger.--threshold-yellowx β if the measured threshold is higher than x (and-Yis given), then the shown value is colored yellow.--threshold-showx β if the measured threshold is higher than x, then the result is shown (default is show always). the value x is in ms.--timestampor--tsβ put a timestamp before the result-lines. use-vto also show a date β°--tx-bufferx β 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/aif it did not resolve in this iteration, e.g. in "resolve once" (-r) mode) - then the time it took to connect (or
-1for 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
Hto halt the graphs (and again to continue) βΈοΈ - press
qto 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
- debian trixie: httping 4.4.0-3 Β· GPL-2.0-only WITH OpenSSL exception
- ubuntu questing: httping 4.4.0-3
- ubuntu resolute: httping 4.4.0-3build1 Β· GPL-2.0-only WITH OpenSSL exception
- ubuntu stonking: httping 4.4.0-3build2 Β· GPL-2.0-only WITH OpenSSL exception
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms