前言
hey是一款使用Golang开发的轻量HTTP压力测试工具,可作为ApacheBench (ab)的替代品。一开始这个工具叫boom,但和https://github.com/tarekziade/boom有冲突,所以就命名为hey(嘿)。 这篇文章来详细说明下hey的安装和使用。
原工具地址详见:https://github.com/rakyll/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
如果需要其他系统版本的二进制文件,请对号入座下载:
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 -h查看帮助信息:
flag needs an argument: -h Usage: hey [options...] 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.xxxx.com/
-n:请求总数
-c:客户端连接数
-m:请求方法,比如GET/POST等
上面例子的含义就是对https://www.xxxx.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查看帮助使用。
总结
总体来说使用方法和结果都和apache的ab命令很相似,具体有什么区别没有详细比较。hey可以很方便的对网站做压力测试,是除了ab外的一个很好工具。