如需VPS代購、PHP開發、服務器運維等服務,請聯系博主QQ:337003006
hey是一款使用Golang開發的HTTP壓力測試工具,可作為ApacheBench (ab)替代品,在文章中《socat與Brook 端口轉發非權威對比測試,到底孰強孰弱?》有提到hey這個工具,這篇文章來詳細說明下hey的安裝和使用。
安裝hey
以下使用Linux 64位系統,如果您是其它操作系統,請自行前往hey項目地址下載對應客戶端。
作者已經提供編譯好的二進制包,可直接下載使用:
#下載hey
wget http://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
如果是其它操作系統,請對號入座:
- Linux 64-bit:
- Mac 64-bit:
- Windows 64-bit:
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 http://www.qq.com/
-n
:請求總數-c
:客戶端連接數-m
:請求方法,比如GET/POST
等
上面例子的含義就是對http://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項目地址: