今天介绍一个Go开发的小工具hey,它可以根据你的需求向web服务器发送请求,并统计请求详情。
hey是一个开源项目。
github地址为:https://github.com/rakyll/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
Mac安装
Hey可以并发地向服务端发起请求,并打印统计数据。下面看看使用方法:Usage: hey [options...] <url>
Options:
-n 发起请求数. 默认200.
-c 并发数. 并发数不能比请求数大. 默认50.
-q 每个并发worker发送请求速率,即(QPS)每秒发送请求数,默认没有限制。
-z 发送请求持续时间. 时间到了就退出.设置了持续时间, 请求数就会被忽略,到时间才停止发请求. 例如:-z 10s -z 3m.
-o 输出格式. 如果没有提供,则打印汇总.还支持csv输出。
-m HTTP方法, 包括:GET, POST, PUT, DELETE, HEAD, OPTIONS.
-H 自定义HTTP请求头. 您可以重复该标志来指定所需的header数量。
例如, -H "Accept: text/html" -H "Content-Type: application/xml" .
-t 每个请求的超时时间(以秒为单位). 默认是20, 0无期限.
-A HTTP Accept标头.
-d HTTP请求体.
-D HTTP请求正文为文件, 例如: /home/user/file.txt or ./file.txt.
-T Content-type, 默认"text/html".
-a 基本认证, username:password.
-x HTTP Proxy 格式: host:port.
-h2 使用 HTTP/2.
-host HTTP Host header.
-disable-compression 禁用压缩.
-disable-keepalive 禁用keep-alive, 不同请求使用不同TCP连接.
-disable-redirects 禁用HTTP重定向
-cpus 并发使用的cpu核数 (当前机器的默认值是8核)
hey -m GET -c 2 -n 10 "http://www.baidu.com"
0.040 [1] |■■■■■■■■■■
0.051 [4] |■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 0.062 [0] |
0.073 [3] |■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 0.084 [0] |
0.095 [0] |
0.106 [0] |
0.117 [0] |
0.128 [0] |
0.139 [0] |
0.150 [2] |■■■■■■■■■■■■■■■■■■■■
Latency distribution:
10% in 0.0400 secs
25% in 0.0465 secs
50% in 0.0629 secs
75% in 0.1478 secs
90% in 0.1496 secs
0% in 0.0000 secs
0% in 0.0000 secs
Details (average, fastest, slowest):
DNS+dialup: 0.0136 secs, 0.0399 secs, 0.1496 secs
DNS-lookup: 0.0080 secs, 0.0000 secs, 0.0400 secs
req write: 0.0000 secs, 0.0000 secs, 0.0001 secs
resp wait: 0.0321 secs, 0.0296 secs, 0.0354 secs
resp read: 0.0249 secs, 0.0093 secs, 0.0488 secs
Status code distribution:
[200] 10 responses
- 详细耗时分布:DNS查询、发送请求、等待响应、读响应
另一个python开发的压测工具,带有前端页面的可以参考:https://github.com/locustio/locust开源项目