hey压测工具

概要

hey是一款golang编写的开源压测工具。本文主要介绍其功能,结果展示,以及对其功能的深入思考。

地址

http://github.com/rakyll/hey

命令

hey [options] url

参数

参数

解释

-n

总请求数目

-c

并发数目

-q

单个work的qps

-z

持续时常,和-n参数可以选择一个使用

-o

输出格式,支持标准和csv两种格式

-m

HTTP method

-H

自定义的请求头

-t

超时时间

-d

http body

-D

http body文件地址

-a

Basic authentication

-x

http代理地址

-h2

开启HTTP/2

-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

使用cpu资源数目

运行

服务启动多个线程并发的去发送请求,记录返回状态,输出统计结果

示例

命令 -- 发送1000个请求,启动5个线程并发发送,使用post方法,单worker的qps为10,请求body所在的文件是/Users/didi/test/body.txt,添加请求头“Method:Test”,请求url是http://127.0.0.1:8001/v1/activity/bus/maas?actid=bus_8
hey -n 1000 -c 5 -H Method:Test -m POST -q 10 -D /Users/didi/test/body.txt "http://127.0.0.1:8001/v1/activity/bus/maas?actid=bus_8"


结果展示
Summary:
  Total:	20.0067 secs 总时间开销
  Slowest:	0.0286 secs。最慢请求的延迟时间
  Fastest:	0.0003 secs。最快请求的延迟时间
  Average:	0.0012 secs。平均请求的延迟时间
  Requests/sec:	49.9834  平均qps
  
  Total data:	7000 bytes  response body总共接收到字节数
  Size/request:	7 bytes。   平均每条请求response body接收到的字节数

Response time histogram: 延迟分布柱状图
  0.000 [1]	|
  0.003 [993]	|■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
  0.006 [1]	|
  0.009 [0]	|
  0.012 [2]	|
  0.014 [0]	|
  0.017 [0]	|
  0.020 [0]	|
  0.023 [0]	|
  0.026 [0]	|
  0.029 [3]	|


Latency distribution: 延迟分布区间
  10% in 0.0007 secs
  25% in 0.0010 secs
  50% in 0.0012 secs
  75% in 0.0013 secs
  90% in 0.0014 secs
  95% in 0.0015 secs
  99% in 0.0021 secs

Details (average, fastest, slowest): 不同步骤的延迟情况
  DNS+dialup:	0.0000 secs, 0.0003 secs, 0.0286 secs
  DNS-lookup:	0.0000 secs, 0.0000 secs, 0.0000 secs
  req write:	0.0001 secs, 0.0000 secs, 0.0012 secs
  resp wait:	0.0010 secs, 0.0002 secs, 0.0204 secs
  resp read:	0.0001 secs, 0.0000 secs, 0.0006 secs

Status code distribution: response code的分布情况
  [200]	1000 responses

压测的统计结果还是挺丰富的。个人觉得Details这个模块的数据特别有用,它把请求延迟进一步做了细分。

思考

cpu核数,worker的关系

     答:没有关系,cpu核数表示实际使用的cpu最大资源数,worker数据表示并发地发送请求的数据。比如如果设置c=5,q=10,它表示会启动5个协程并发的去发送请求,每个协程最大按照qps为10进行发送。

如何理解rate limit的设定,如果有慢请求会如何处理

    答: 它只是表示单个协程发送请求的最大qps数量,整个进行最大发送qps量应该等于c*q。如果有慢请求,会照成协程阻塞,这样单位时间实际的发送请求数量会小于配置的数量。可以这么理解,此时server的负载已经饱和,继续加压无济于事。在最终的report中会显示实际的qps数量。

hey是否支持parameter变化,是否支持body变化。如果不支持可以如何改动?

    答: 目前不支持,如果希望parameter和body不一致,那么需要对代码进行修改。比如将所有的请求放到一个文件中,发送时按照文件的顺序进行遍历,或者随机选取一个。另外hey中RequestFunc支持自定义构造请求,也需要单独开发实现。

三个disable参数如何使用

    答:直接在http client中的transport中赋值

是否考虑返回结果的正确性

    答:会对code进行校验和分类,在report结果中展示。但不会对response中的body数据进行解析,也就是无法进行完整的正确性比对。如果要考虑正确性,需要建立requestresponse一对一的关系,不过这样也需要单独开发。​​​​​​​

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值