
VPS教程
hey是一款使用Golang开发的HTTP压力测试工具,可作为ApacheBench (ab)替代品,在之前的文章中《socat与Brook端口转发测试对比哪个更好?》有提到hey这个工具,这篇文章来详细说明下hey的安装和使用。
以下使用Linux 64位系统,如果您是其它操作系统,请自行前往hey项目地址下载对应客户端。
作者已经提供编译好的二进制包,可直接下载使用:
- #下载hey
- wget https://hey-release.s3.us-east-2.amazonaws.com/hey_linux_amd64
- #赋予执行权限
- chmod +x hey_linux_amd64
- #移动文件到sbin目录
- mv hey_linux_amd64 /usr/sbin/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