阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

开源HTTP压力测试工具hey

236次阅读
没有评论

共计 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

如果是其它操作系统,请对号入座:

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

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-01-22发表,共计2924字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中