Publish: 2021-01-17 | Modify: 2021-01-17
hey is an HTTP stress testing tool developed using Golang. It can be used as a replacement for ApacheBench (ab). In the article "socat vs Brook port forwarding non-authoritative comparison test, who is stronger and weaker?", hey is mentioned, and this article provides detailed instructions on how to install and use hey.
The following instructions are for a Linux 64-bit system. If you are using a different operating system, please visit the hey project repository to download the corresponding client.
The author has provided pre-compiled binaries that can be downloaded and used directly:
# Download hey
wget https://hey-release.s3.us-east-2.amazonaws.com/hey_linux_amd64
# If the download speed is slow, you can use the xiaoz software library link
wget http://soft.xiaoz.org/linux/hey_linux_amd64
# Grant execute permission
chmod +x hey_linux_amd64
# Move the file to the sbin directory
mv hey_linux_amd64 /usr/sbin/hey
If you are using a different operating system, please use the appropriate link:
To view the help information, enter hey -h
:
flag needs an argument: -h
Usage: hey [options...] <url>
Options:
-n Number of requests to run. Default is 200.
-c Number of workers to run concurrently. Total number of requests cannot
be smaller than the concurrency level. Default is 50.
-q Rate limit, in queries per second (QPS) per worker. Default is no rate limit.
-z Duration of application to send requests. When duration is reached,
application stops and exits. If duration is specified, n is ignored.
Examples: -z 10s -z 3m.
-o Output type. If none provided, a summary is printed.
"csv" is the only supported alternative. Dumps the response
metrics in comma-separated values format.
-m HTTP method, one of GET, POST, PUT, DELETE, HEAD, OPTIONS.
-H Custom HTTP header. You can specify as many as needed by repeating the flag.
For example, -H "Accept: text/html" -H "Content-Type: application/xml" .
-t Timeout for each request in seconds. Default is 20, use 0 for infinite.
-A HTTP Accept header.
-d HTTP request body.
-D HTTP request body from file. For example, /home/user/file.txt or ./file.txt.
-T Content-type, defaults to "text/html".
-a Basic authentication, username:password.
-x HTTP Proxy address as host:port.
-h2 Enable HTTP/2.
-host HTTP Host header.
-disable-compression Disable compression.
-disable-keepalive Disable keep-alive, prevents re-use of TCP
connections between different HTTP requests.
-disable-redirects Disable following of HTTP redirects
-cpus Number of used cpu cores.
(default for current machine is 2 cores)
For example:
hey -n 10000 -c 100 -m GET https://www.qq.com/
-n
: Total number of requests-c
: Number of concurrent client connections-m
: Request method, such as GET/POST
The above example sends 100 GET requests to https://www.qq.com/
with a total of 10,000 requests. After execution, hey will print out the statistics, as shown below.
Summary:
Total: 9.9769 secs
Slowest: 0.3740 secs
Fastest: 0.0350 secs
Average: 0.0971 secs
Requests/sec: 1002.3120
Response time histogram:
0.035 [1] |
0.069 [894] |■■■■■■
0.103 [6193] |■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
0.137 [2158] |■■■■■■■■■■■■■■
0.171 [464] |■■■
0.205 [118] |■
0.238 [84] |■
0.272 [56] |
0.306 [29] |
0.340 [2] |
0.374 [1] |
Latency distribution:
10% in 0.0702 secs
25% in 0.0802 secs
50% in 0.0917 secs
75% in 0.1056 secs
90% in 0.1266 secs
95% in 0.1510 secs
99% in 0.2334 secs
Details (average, fastest, slowest):
DNS+dialup: 0.0016 secs, 0.0350 secs, 0.3740 secs
DNS-lookup: 0.0008 secs, 0.0000 secs, 0.1045 secs
req write: 0.0001 secs, 0.0000 secs, 0.0716 secs
resp wait: 0.0896 secs, 0.0320 secs, 0.2326 secs
resp read: 0.0054 secs, 0.0014 secs, 0.1429 secs
Status code distribution:
[200] 10000 responses
For more usage examples, please execute hey -h
to view the help documentation.
hey is a convenient tool for stress testing websites and provides detailed statistical results. However, please be aware that stress testing tools can put a certain amount of pressure on servers, similar to launching a DDoS attack on a website, so please use it responsibly.
hey project repository: https://github.com/rakyll/hey
I come from China and I am a freelancer. I specialize in Linux operations, PHP, Golang, and front-end development. I have developed open-source projects such as Zdir, ImgURL, CCAA, and OneNav.