共计 2924 个字符,预计需要花费 8 分钟才能阅读完成。
hey 是一款使用 Golang 开发的 HTTP 压力测试工具,可作为 ApacheBench (ab) 替代品,在文章中《socat 与 Brook 端口转发非权威对比测试,到底孰强孰弱?》有提到 hey 这个工具,这篇文章来详细说明下 hey 的安装和使用。
安装 hey
以下使用 Linux 64 位系统,如果您是其它操作系统,请自行前往 hey 项目地址下载对应客户端。
作者已经提供编译好的二进制包,可直接下载使用:
# 下载 hey
wget https://hey-release.s3.us-east-2.amazonaws.com/hey_linux_amd64
#如果下载速度较慢,可使用 xiaoz 软件库链接
wget http://soft.xiaoz.org/linux/hey_linux_amd64
#赋予执行权限
chmod +x hey_linux_amd64
#移动文件到 sbin 目录
mv hey_linux_amd64 /usr/sbin/hey
如果是其它操作系统,请对号入座:
- Linux 64-bit: https://hey-release.s3.us-east-2.amazonaws.com/hey_linux_amd64
- Mac 64-bit: https://hey-release.s3.us-east-2.amazonaws.com/hey_darwin_amd64
- Windows 64-bit: https://hey-release.s3.us-east-2.amazonaws.com/hey_windows_amd64
hey 的使用
输入 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)
举个例子:
hey -n 10000 -c 100 -m GET https://www.qq.com/
-n
:请求总数-c
:客户端连接数-m
:请求方法,比如GET/POST
等
上面例子的含义就是对 https://www.qq.com/
发起 100 个 GET 并发请求,请求总数为 10000 个,执行完毕后 hey 还会打印统计信息,如下。
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
更多用法请自行执行 hey -h
查看帮助使用。
最后
hey 可以很方便的对网站进行压测,并返回详细统计结果。另外压测工具会对服务器造成一定压力,相当于对网站发起 CC 攻击,因此请勿滥用。
hey 项目地址:https://github.com/rakyll/hey
正文完
星哥玩云-微信公众号